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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0904
埴輪205号起動中HSPプログラムをコマンドラインで操作2解決


埴輪205号

リンク

2008/9/4(Thu) 01:41:42|NO.18983

A.EXEというHSPで動画を再生するプログラムがあるとして
A.EXEが起動中に "A.EXE stop" とコマンドラインで停止等の操作をする事は
できるのでしょうか?
どなたか解決方法orヒントなどありましたら、宜しくお願いします



この記事に返信する


New Monkey

リンク

2008/9/4(Thu) 06:09:38|NO.19007

二重起動防止を応用して・・・
http://yokohama.cool.ne.jp/chokuto/urawaza/doubleexe2.html
http://yokohama.cool.ne.jp/chokuto/urawaza/commonmem1.html

#uselib "kernel32.dll" #func CreateFileMapping "CreateFileMappingA" sptr, sptr, sptr, sptr, sptr, sptr #func MapViewOfFile "MapViewOfFile" sptr, sptr, sptr, sptr, sptr #func UnmapViewOfFile "UnmapViewOfFile" sptr #func GetLastError "GetLastError" #func CloseHandle "CloseHandle" sptr #func RtlMoveMemory "RtlMoveMemory" sptr, sptr, sptr #uselib "user32.dll" #func PostMessage "PostMessageA" sptr, sptr, sptr, sptr #define WM_USER_DUPEXEC 0x0401 ;二重起動を知らせるメッセージを定義 onexit *exit oncmd gosub *dupexec, WM_USER_DUPEXEC CreateFileMapping -1, 0, 4, 0, 260, "myappname" ;マッピングオブジェクト作成 hmapobj = stat GetLastError existflg = stat MapViewOfFile hmapobj, 2, 0, 0, 0 ;マッピング pmapobj = stat if existflg = 183 { ;二重起動だった場合 cmdline = dir_cmdline RtlMoveMemory pmapobj+4, varptr(cmdline), 256 ;共有メモリにコマンドライン文字列を格納 hwindow = 0 RtlMoveMemory varptr(hwindow), pmapobj, 4 ;共有メモリから初回起動ウィンドウハンドルを取得 PostMessage hwindow, WM_USER_DUPEXEC, 0, 0 ;二重起動されたことを初回起動ウィンドウに通知 UnmapViewOfFile pmapobj CloseHandle hmapobj end } else { ;初回起動だった場合 hwindow = hwnd RtlMoveMemory pmapobj, varptr(hwindow), 4 ;共有メモリにウィンドウハンドルを格納 stop } *dupexec ;初回起動ウィンドウが二重起動通知を受けたときの処理 sdim cmdline, 256 RtlMoveMemory varptr(cmdline), pmapobj+4, 256 ;共有メモリからコマンドライン文字列を取得 mes cmdline return *exit UnmapViewOfFile pmapobj CloseHandle hmapobj end



埴輪205号

リンク

2008/9/4(Thu) 20:33:19|NO.19012

返信ありがとうございます。
共有メモリ空間を作ってそこで情報の共有が出来るのですね。
2重起動不可能のプログラムからこんな事が出来るなんて奥が深いです

早速試してみたいとおもいます、ありがとうございました



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