掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiで作ったCGIでFindWindowが効かない (ID:35967)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
もしかして さん、ありがとうございます 一応確認の為に、別立てで(下記ソース) 1.FindWindowでのプログラム検索機能 2.EnumWindowsProc(コールバック関数)での一覧リスト作成 ..を可能にした、DLLを作成しまして ■一般PGのテスト用プログラム(test2.exe)を作りまして 上記 1&2 をテストしますと 1. 目的のトップレベルWindowフォーム名(モニター)が処理出来ます。 (例: Handle=999999) 2. 現在、起動されている複数のフォーム名等が出てきます。 (例: 受信トレイ - Outlook Express / Delphi 5 - Test ..etc) ■しかし、CGIプログラム(index.cgi)でこの dllを呼びますと 1. 目的のトップレベルWindowフォーム名(モニター)でハンドルが取れません。 (例: Handle=0) 2. 何か視点?の違う名称が出てきます。 ( Zend Timeout Window / ModemDeviceChange / BadApplicationNotificationWindow ..etc) 因みに目的のプログラムは自作のもの(test.exe)で フォームには「モニター」のような文字が入っています。 以上のように通常のプログラムとCGIでの動作が違う様です。 このような結果になる事は概略分かってきましたが、対策が取れません。 それとも、CGIベースでは出来ないのでしょうか。 よろしくお願いします。 -- 以下、多少手抜きリストですが ----------------- //--------------------------------------------- function fm_find(cap_str:PChar;hd:HWND): BOOL; stdcall; begin result := false; hd := FindWindow(nil,cap_str); if hd<>0 then begin result := true; end; end; //--------------------------------------------- function EnumWindowsProc(hwindow :HWnd; lparam :LPARAM):BOOL; stdcall; var PC :PChar; Len :integer; Name :string; begin Result :=false; if hWindow <> 0 then begin GetMem(PC, 500); Len :=GetWindowtext(hWindow, PC, 500); setstring(Name, PC, Len); if Name <> '' then begin p_enum(lParam)^.add('[hd='+inttostr(hWindow)+']:'+Name); end; FreeMem(PC); Result :=true; end; end; //--------------------------------------------- function fm_list(slist:PChar): BOOL; stdcall; var StrList:TstringList; begin StrList := TStringList.Create; EnumWindows(@EnumWindowsProc, LParam(@StrList)); StrCopy(slist, PChar(StrList.Text)); StrList.Free; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.