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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1026
ランチャーで起動、終了する5解決


リンク

2012/10/26(Fri) 21:49:48|NO.50254

HSPでHSP製ではないEXEを起動するランチャーを作成した場合、終了もHSP側から操作したいのですが上手い方法が浮かびません。
良い方法がありましたら教えて下さい。

やりたい事は
・HSP起動→別のEXE起動→別のEXEが終了したらHSPも自動終了する。
・HSP起動→別のEXE起動→HSPから別のEXEを終了する。
です。
よろしくお願いします。



この記事に返信する


cats

リンク

2012/10/26(Fri) 22:42:27|NO.50258

作ってみましたが多分確実ではありません。

#module #uselib "user32.dll" #cfunc GetDesktopWindow "GetDesktopWindow" #cfunc GetWindow "GetWindow" int,int #cfunc GetWindowText "GetWindowTextA" int,int,int #cfunc IsWindowVisible "IsWindowVisible" int #uselib "kernel32.dll" #cfunc lstrcmp "lstrcmp" int,int #define MAX_PATH 260 #define GW_OWNER $00000004 #define GW_HWNDNEXT $00000002 #define GW_CHILD $00000005 #deffunc getproclist var prm1 WndDesk=GetDesktopWindow() if WndDesk!0 { WndCurWin=GetWindow(WndDesk,GW_CHILD) }else{ return -1 } buf="" : sdim szClassName,MAX_PATH : sdim chWinTxt,MAX_PATH count=0 while WndCurWin!0 await ret=GetWindowText(WndCurWin,varptr(chWinTxt),MAX_PATH) i=WndCurWin : buf+=str(i)+","+chWinTxt+"\n" count++ WndCurWin=GetWindow(WndCurWin,GW_HWNDNEXT) wend while WndCurWin!0 await ret=GetWindowText(WndCurWin,varptr(chWinTxt),MAX_PATH) if chWinTxt!"" { vs=IsWindowVisible(WndCurWin) if vs!0 { owhwnd=GetWindow(WndCurWin,GW_OWNER) if owhwnd==0 { if chWinTxt!"Program Manager" { lpString="Progman" cp=lstrcmp(varptr(szClassName),varptr(lpString)) if cp!0 { i=WndCurWin : buf+=str(i)+","+chWinTxt+"\n" count++ } } } } } WndCurWin=GetWindow(WndCurWin,GW_HWNDNEXT) wend prm1=buf sdim szClassName,0 : sdim chWinTxt,0 : sdim buf,0 return count #uselib "user32.dll" #func f_GetWindowThreadProcessID "GetWindowThreadProcessId" sptr , sptr #cfunc c_GetWindowLong "GetWindowLongA" sptr , sptr #uselib "kernel32.dll" #func f_OpenProcess "OpenProcess" sptr , sptr , sptr #func f_CloseHandle "CloseHandle" sptr #cfunc c_GetLastError "GetLastError" #uselib "psapi.dll" #func f_GetModuleFileNameEx "GetModuleFileNameExA" sptr , sptr , sptr , sptr #define GWL_HINSTANCE 0xFFFFFFFA #define PROCESS_ALL_ACCESS 0x001F0FFF #deffunc GetExeFileName int gefn_hwnd_ , var gefn_filename_ dim returnx sdim gefn_filename_ , 2048 hMod = c_GetWindowLong( gefn_hwnd_ , GWL_HINSTANCE ) f_GetWindowThreadProcessId gefn_hwnd_ , varptr( PId ) sledID = stat f_OpenProcess PROCESS_ALL_ACCESS , 1 , PId hProcess = stat if hProcess ! 0 { f_GetModuleFileNameEx hProcess , hMod , varptr( gefn_filename_ ) , 2048 slen = stat if slen = 0 { returnx |= (1<<31) | (1<<0) return -1 }else{ returnx = slen } }else{ returnx |= (1<<31) | (1<<1) return -1 } f_CloseHandle hProcess return returnx #global //ここに起動するファイルを入れる PATH="C:\\WINDOWS\\system32\\notepad.exe" exec path,16 mes ""+PATH+"\nこのファイルを起動しました" wait 100 *main temp=str(temp) : work=str(work) getproclist temp : num=stat notepos=0 : count=0 sdim mhwnd,8,num : sdim proctitle,260,num repeat num await repeat 2 getstr work,temp,notepos,',' : notepos+=strsize if cnt==0 : mhwnd(count)=work if cnt==1 : proctitle(count)=work loop GetExeFileName int(mhwnd(count)),filename if stat!-1{ if getpath(filename,16)=getpath(PATH,16):flug=1 } count++ loop if flug=1:flug=0:else:dialog "操作対象が終了したので終了します",1,"確認":end await 20 goto *main



ANTARES

リンク

2012/10/27(Sat) 03:13:33|NO.50262

 拙作anthspex.dllのwritable命令を使いましたが、
Win32APIのCreateFileを使ってもできます。

#include "anthspex3.as" sdim file,260 input file button "参照",*l_ref button "実行",*l_exec stop *l_ref dialog "exe",16,"実行ファイル": c=stat if c==0: dialog "キャンセルされました": stop objprm 0,refstr stop *l_exec exist file: if strsize<0: dialog "「"+file+"」が見つかりません": stop exec file repeat: wait 1 writable flg,file if flg==0 { dialog file+"が終了しました" end } else : if flg==3 { dialog "エラーが発生しました" end } else : if flg!=2 { dialog "状況不明" end } loop



リンク

2012/10/27(Sat) 12:11:41|NO.50270

catsさん
レスありがとうございます。
理想の挙動です!
頂いたソースを参考に勉強したいと思います。


ANTARESさん
レスありがとうございます。
anthspex3.asが無い為に確認ができません。
HPの方も閲覧させていただきましたが、ファイルは見つかりませんでした。
解決済みとなっていますが、宜しければファイルの場所を教えて下さい。
Win32APIのCreateFileについては現在の技量を超えるので、ゆくゆく勉強したいと思います。



ANTARES

リンク

2012/10/28(Sun) 04:09:06|NO.50290

以下のURLです。
http://antares.cn/hsp/anthspex/



リンク

2012/10/29(Mon) 18:50:13|NO.50331

ANTARESさん

レスありがとうございます。
LZHの中身を見落としていました。
解決済みなのにご返信ありがとうございます。



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