Googole Chromeのクラス名を把握して、一旦Googole Chromeを停止しようとしましたが、Googole ChromeのVer4になってから、停止ができなくなってしまいました。
クラス名は、Chrome_WindowImpl_0で間違いないと思います。
ただ停止はできませんが、ヘルプやオプション画面は開かなくなりました。
状態等によって別のクラス名になっているのでしょうか?
どなたか、助けて頂けると助かります。
よろしくお願いします。
テストしてみました、下記のコードで2度クリックすると
Windowが閉じられますのでクラス名は合っています。
1度目と2度目でCWの値が変化します、原因は分かりません。
停止と言われるのがどういう状態か分かりませんが。
procedure TForm1.BitBtn1Click(Sender: TObject);
var CW :HWND;
begin
CW:=FindWindow('Chrome_WindowImpl_0',nil);
PostMessage(CW, WM_Close, 0, 0);
end;
ありがとうございます。
四苦八苦しましたが、2回続けて命令コードを記載した、
止まりました。
ありがとうございました。
>四苦八苦しましたが、2回続けて命令コードを記載した、
>止まりました。
コードを二度続けただけだと終了しなかったと思いますが。
どの様にされましたか、出来れば教えて下さい。
CW:=FindWindow('Chrome_WindowImpl_0',nil);
PostMessage(CW, WM_Close, 0, 0);
CW:=FindWindow('Chrome_WindowImpl_0',nil);
PostMessage(CW, WM_Close, 0, 0);
上記のように続けてコードを記載しました。
IEは、一回で止まったのですが、Chromeは、一回で止まらず、TSさんの
ご指摘戴きました、2度クリックをヒントにいろいろ試したところ、
少々時間はかかってしまいましたが、上記コードで止まりました。
理解は少々不明ですが、とりあえずこの方法で行ないました。
御世話になりました。
みなさんこんにちは.Mr.XRAYです.
>理解は少々不明ですが
Google Chromeはタブ表示形式のブラウザです.
これは,タブ1つ1つにハンドルがあります.
例えばTWebBrowserを使用してタブ表示形式のブラウザを作るとします.
そのタブ1つ1つにTWebBrowserを配置しますから,そのハンドルがあります.
その他にブラウズ本体関係のハンドルがあります.
したがって,ブラウザを閉じるには,例えば,
procedure TForm1.Button1Click(Sender: TObject);
var
CW :HWND;
begin
while True do begin
CW := FindWindow('Chrome_WindowImpl_0',nil);
if CW = 0 then break;
PostMessage(CW, WM_Close, 0, 0);
end;
end;
という感じでしょうか.
実は,IE7を操作するサンプルを作成していて,うまくいかず,
私も最近気がついたのです.IE7がタブ表示形式のブラウザだという事を(苦笑).
亀レスですが,ちょっと思いついたので.
タブのハンドルを全て閉じると,Google Chromeが閉じるのは,
>最後のハンドルを閉じると、プロセスオブジェクトが自動的に削除されます。
ということです(MSDNの記事より).
ここのSDIスタイルのアプリも同様な仕様です.
http://mrxray.on.coocan.jp/Delphi/plSamples/710_SDIStyleApp.htm
>タブのハンドルを全て閉じると,Google Chromeが閉じるのは,
ここの過去ログをみたら,TerminateProcessでNotePadが閉じないというのがありました.
これは,ワードでも同じですが,文書のハンドル,NotePadのエディタ部分のハンドルだけを閉じても
ワードあるいは,Notepadは閉じません.
もちろん,ワードあるいはNotepad自体のハンドルを(取得して)閉じれば終了します.
ツイート | ![]() |