HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0202
名無しChormeウィンドウをアクティブ4解決


名無し

リンク

2021/2/2(Tue) 15:57:31|NO.92201

HSPから外部ウィンドウをアクティブ化したいのですが、
Google Chormeみたいにサイトによってウィンドウタイトルが
変わるものをアクティブ化するにはどうすればいいでしょうか?

下のスクリプトでは空のページを開いている状態ではアクティブには出来ますが、
他のサイトを見ているとウィンドウタイトルが変わるためアクティブにできません。


#include "hspext.as" aplsel "新しいタブ",0 if stat=1 : dialog "対象ウィンドウがありません。" : end aplact stop



この記事に返信する


沢渡

リンク

2021/2/2(Tue) 18:12:13|NO.92203

こんな感じで、ウィンドウのタイトルを検索して該当する文字列を含むかどうかを調べて
ウィンドウハンドルを取得し、SetForegroundWindowでアクティブにするのは
どうでしょうか。

#include "user32.as" s="新しいタブ" //ウィンドウを検索 FindWindow 0,0 : h=stat //最初のウィンドウのハンドルを取得 res=0 repeat if h=0 : break //最後までヒットしなかったらループを出る GetWindowTextLength h : l=stat+1 : sdim t,l //ウィンドウタイトルの文字数を求め、バッファを確保 GetWindowText h,varptr(t),l //ウィドウタイトルを取得 if instr(t,0,s)!=-1 : res=h : break //該当する文字列を含むかどうか検索。ヒットしたらこのウィンドウが対象になる。 GetWindow h,2 : h=stat //次のウィンドウのハンドルを取得 loop if res { //resの中には対象のウィンドウのハンドルが入る。 button gosub "アクティブ",*act } else { dialog "対象ウィンドウがありません。" : end } stop *act SetForegroundWindow res // return



名無し

リンク

2021/2/2(Tue) 18:31:00|NO.92204

>沢渡さん
その発想は思いつきませんでした!
これでやりたいことが出来そうです。
ありがとうございました!



zakki

リンク

2021/2/3(Wed) 18:32:41|NO.92207

同じ流れでGetClassNameでクラスが"Chrome_WidgetWin_1"と一致するウィンドウを探す手もあります。



沢渡

リンク

2021/2/4(Thu) 19:05:04|NO.92210

そんな手段が…。勉強になります。

#include "user32.as" s="Chrome_WidgetWin_1" //ウィンドウを検索 FindWindow 0,0 : h=stat //最初のウィンドウのハンドルを取得 res=0 repeat if h=0 : break //最後までヒットしなかったらループを出る sdim t,300 GetClassName h,varptr(t),300 if t=s : res=h : break GetWindow h,2 : h=stat //次のウィンドウのハンドルを取得 loop if res { //resの中には対象のウィンドウのハンドルが入る。 button gosub "アクティブ",*act } else { dialog "対象ウィンドウがありません。" : end } stop *act SetForegroundWindow res // return



ONION software Copyright 1997-2021(c) All rights reserved.