FreeBASIC ExtLibdisphelper
目次→実行時ライブラリー参考→オペレーティング・システム関連→disphelper←オリジナル・サイト
目次→FreeBASIC のハッキング→FreeBASIC でのハッキングのための情報→外部ライブラリ索引→disphelper←オリジナル・サイト
disphelper
Disphelper は、素の C で使うことができる COM 助手ライブラリです。
MFC や ATL は必要ありません。
これで、簡単な printf 様式の文法を備えた COM オブジェクトを呼ぶことができます。
ウエブ・サイト: http://disphelper.sourceforge.net/∞
利用できる環境: Win32, Linux (using WINE)
include するヘッダー: disphelper/disphelper.bi
ヘッダー・バージョン: 2005〜
注意:コンパイル時に、下記のエラーが表示される場合:
FreeBASIC\bin\win32\ld.exe: cannot find -l***
これは、linker のエラーで、***.dll.a (または ***.a または lib***.a)が見つからないからです。
https://sourceforge.net/projects/fbc/files/Older%20versions/0.90.1/Binaries%20-%20Windows/Libraries/
から該当ファイル(FB-win32-disphelper-0.81.zip)をダウンロードして fbc の /lib/win32 に ****.a ファイルをコピーします。
例:
'' 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, ".Open(%s, %s, %b)", "GET", "https://sourceforge.net", FALSE)
dhCallMethod(objHTTP, ".Send")
Dim As ZString Ptr szResponse
dhGetValue("%s", @szResponse, objHTTP, ".ResponseText")
Print "Response: "; *szResponse
dhFreeString(szResponse)
SAFE_RELEASE(objHTTP)
dhUninitialize(TRUE)
Sleep
'' インターネット・エクスプローラを起動させる例
#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, "Visible = %b", TRUE)
dhCallMethod(ieApp, ".Navigate(%s)", url)
SAFE_RELEASE(ieApp)
dhUninitialize(TRUE)
End Sub
navigate("www.freebasic.net")
下のプログラムは、コードを Shift-JIS で保存してコンパイルすると、MsgBox の日本語が文字化けします。
Unicode で保存してコンパイルすると、MsgBox で日本語を表示できます。
Unicode で保存するには、fbedit1.0.7.4 を使うか、FreeBasic IDE-poseidonFB を使うと便利です。
'' VB Script の例
#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")
'' 以下の1行は、このプログラムを Unicode で保存すると文字化けしません。
RunScript(NULL, NULL, !"MsgBox(\"これは VBScript のテストです。\" & vbcrlf & \"機能しています!\",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)
ページ歴史:2012-02-02 10:44:58
日本語翻訳:WATANABE Makoto、原文著作者:SirMud