掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ポインタについて (ID:27674)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
AVAさま ありがとうございます。 早速、教えていただいたDLLの動的リンクで試すにあたって、Win32APIのSleep関数を呼び出そうとしたのですが、なぜか、関数のハンドルはGetできたのですが実行すると固まってしまいます。 ※ソース implementation type TAbc = procedure Sleep( milSec : integer); stdcall; procedure TestDllDynLoadFunc; DllHandle: THandle; Abc: TAbc; begin try //kernel32.DLL呼び出し DllHandle := LoadLibrary('kernel32.DLL'); if DllHandle = 0 then begin //エラーコードはWin32Apiを参照してネ raise DllError.Create('kernel32.DLLが見つかりません'); end; //関数セット @Abc := GetProcAddeess(DllHandle, 'Sleep'); if @Abc = nil then begin raise DllError.Create('Sleepが見つかりません'); end; //DLLのSleepを実行すると固まる…>< Abc(5000); finally if DllHandle <> 0 then begin FreeLibrary(DllHandle); end; end; end; <DLLの内容が不明なのでとりあえずパラメータなしでDLL中の関数名を<GetAddressと想定して DLLの内容は出力可能なプリンタの一覧を返す関数が入っています。第一引数char***のほうにプリンタ一覧が返ってくるのですが、 char***なんて配列をDelphiでどう定義してどのように渡したら良いのか 分からないので、配列の先頭アドレスから順々にアクセスしようとか 考えています。 (ちなみに.NETだとStringBuilderクラスを引数にすればできます)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.