disphelper
 
Disphelper是一个可以在普通C中使用的COM帮助程序库。不需要MFC或ATL。它允许您使用简单的printf样式语法调用COM对象。

网站:http://disphelper.sourceforge.net/
支持平台:Win32,Linux(使用WINE)
标题包括:disphelper / disphelper.bi
标题版本:2005年

例子

''HTTP GET示例,使用MSXML2

#define UNICODE
#include "disphelper/disphelper.bi"

DISPATCH_OBJ(objHTTP)

dhInitialize(TRUE)
dhToggleExceptions(TRUE)

dhCreateObject("MSXML2.XMLHTTP.4.0", NULL, @objHTTP)

dhCallMethod(objHTTP, "打开(%s,%s,%b)", "GET", "http://sourceforge.net", FALSE)
dhCallMethod(objHTTP, "。发送")

Dim As ZString Ptr szResponse
dhGetValue("%s", @szResponse, objHTTP, ".ResponseText")

Print "响应:"; *szResponse
dhFreeString(szResponse)

SAFE_RELEASE(objHTTP)
dhUninitialize(TRUE)


''IExplorer示例

#define UNICODE
#include "disphelper/disphelper.bi"

Sub navigate(ByRef url As String)
    DISPATCH_OBJ(ieApp)
    dhInitialize(TRUE)
    dhToggleExceptions(TRUE)

    dhCreateObject("InternetExplorer.Application", NULL, @ieApp)
    dhPutValue(ieApp, "可见=%b", TRUE)
    dhCallMethod(ieApp, ".Navigate(%S)", url)

    SAFE_RELEASE(ieApp)
    dhUninitialize(TRUE)
End Sub

    navigate("www.freebasic.net")


''VB脚本示例

#define UNICODE
#include "disphelper/disphelper.bi"

''此函数使用MSScriptControl运行脚本。
''(可选)返回结果。
Sub RunScript _
    ( _
        ByVal result_identifier As LPWSTR, _
        ByVal result As LPVOID, _
        ByVal script As LPWSTR, _
        ByVal language As LPWSTR _
    )

    DISPATCH_OBJ(control)
    If (SUCCEEDED(dhCreateObject("MSScriptControl.ScriptControl", NULL, @control))) Then
        If (SUCCEEDED(dhPutValue(control, ".Language =%T", language))) Then
            dhPutValue(control, ".AllowUI =%b", TRUE)
            dhPutValue(control, ".UseSafeSubset =%b", FALSE)

            If (result) Then
                dhGetValue(result_identifier, result, control, ".Eval(%T)", script)
            Else
                dhCallMethod(control, ".Eval(%T)", script)
            End If
        End If
    End If

    SAFE_RELEASE(control)
End Sub

    dhInitialize(TRUE)
    dhToggleExceptions(TRUE)

    ''VBScript示例
    RunScript(NULL, NULL, !"MsgBox(\"This Is a VBScript test.\"&vbcrlf &\\"It worked!\",64 Or 3)", "VBScript")

    ''JScript示例
    Dim As Integer result
    RunScript("%d", @result, "Math.round(Math.pow(5,2)* Math.PI)", "JScript")
    Print "结果="; result

    Print "按任何一个键退出..."
    Sleep

    dhUninitialize(TRUE)