掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ShowMessage で文字列を表示するには? (ID:31819)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 早速ですが、DLLを呼び出して DLLでスレッドを作成し、Synchronize を 使用して ShowMessage で文字列を表示しようとしています。 以下、テストプログラムを作りましたが、 動作しません。 Execute までは動いているようですが DebugMessage が実行されません。 対処方法を教えてください。 −−−−−−−−−−−−−−−−−−−−−−−−− unit TestMain; interface uses Windows, Classes, Controls, StdCtrls, Forms; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end; TCallTest = procedure; stdcall; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var TH: THandle; CallTest: TCallTest; begin TH := LoadLibrary('TestDll.Dll'); if TH <> 0 then begin @CallTest := GetProcAddress(TH, 'CallTest'); if @CallTest <> nil then CallTest; end; end; end. −−−−−−−−−−−−−−−−−−−−−−−−− library testDll; uses SysUtils, Classes, Dialogs; {$R *.res} type TTestDll = class(TThread) private FMessage: AnsiString; procedure DebugMessage; protected procedure Execute; override; public constructor Create(MesStr: String); end; constructor TTestDll.Create(MesStr: String); begin inherited Create(false); FMessage := MesStr; FreeOnTerminate := true; end; procedure TTestDll.DebugMessage; begin ShowMessage(FMessage); end; procedure TTestDll.Execute; begin Synchronize(DebugMessage); end; procedure CallTest; stdcall; export; begin TTestDll.Create('ボタンを押した'); end; exports CallTest; begin end. −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.