SSP/仕様書/FMO
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*FMO関連の資料 [#ra3ec8a9]
**FMOエントリのヘッダ仕様修正 [#f36e9d1a]
1プロセスで複数ゴーストを立たせるため、FMOエントリの識別...
SSPでの識別子の仕様の例は以下のとおりです。
ssp_fmo_header_000002a5_002b3132.name[1]Emily\r\n
ssp_fmo_header_[プロセスID-16進]_[Sakura側hwnd-16進]
以上のような32バイトの文字列を生成することにより、ゴース...
**FMOエントリ追加 [#be3dad20]
***[ID].kerohwnd [#cc2cb176]
kero側のhwndがunsigned int値として格納されています。~
主に某ソフトでkero側のHWND値が欲しいという需要から追加さ...
**FMOの排他制御 [#c3908ec5]
***説明 [#y2336bab]
FMOの排他制御には、"SakuraFMO"という名前付Mutexを利用しま...
書き込み、読み込み時にきちんとMutexを所有することでロック...
***サンプルコード [#gb43bc83]
#pre{{
HANDLE hMutex = CreateMutex(NULL,FALSE,"SakuraFMO");
if ( hMutex == NULL ) { エラー処理; }
if ( WaitForSingleObject(hMutex, 1000) != WAIT_TIMEOUT ) {
FMO読み書き;
ReleaseMutex(Mutex);
}
CloseHandle(Mutex);
}}
素直に書けばこうなりますが、CreateMutexするコストを気にす...
なお、その場合、最後にCloseHandleする必要はなく、プロセス...
また、処理中のプロセスがMutexをつかんだまま異常終了すると...
これを忘れてWAIT_OBJECT_0と比較しないよう注意してください...
[[こちらも参考にするとよいでしょう。>http://bottle.mikage...
**FMOが変更されたことの他プロセスへの通知 [#oe08d56f]
NOTIFY otherghostnameを実装したり、その他FMOを使うツール...
ですので……
#pre{{
#define SAKURA_API_BROADCAST_GHOSTCHANGE 1024
spSakuraAPIMsg = RegisterWindowMessage("Sakura");
SendNotifyMessage(HWND_BROADCAST,spSakuraAPIMsg,SAKURA_AP...
}}
上記のように、FMOを更新する側が
-message = Sakura APIと同じ
-wParam = 1024
-lParam = 自分のプロセスID
という通知を全アプリにブロードキャストすることで、FMOの更...
#pre{{
#define SAKURA_API_BROADCAST_GHOSTCHANGE 1024
spSakuraAPIMsg = RegisterWindowMessage("Sakura");
int CALLBACK WindowProc( HWND hWnd, UINT message, WPARAM ...
switch( message ){
case spSakuraAPIMsg:
if ( wParam == SAKURA_API_BROADCAST_GHOSTCHANGE ) {
if ( lParam != GetCurrentProcessId() ) {
なんかやる;
}
}
}
}}
受ける側はこのようにして、更新の通知をチェックすることが...
終了行:
*FMO関連の資料 [#ra3ec8a9]
**FMOエントリのヘッダ仕様修正 [#f36e9d1a]
1プロセスで複数ゴーストを立たせるため、FMOエントリの識別...
SSPでの識別子の仕様の例は以下のとおりです。
ssp_fmo_header_000002a5_002b3132.name[1]Emily\r\n
ssp_fmo_header_[プロセスID-16進]_[Sakura側hwnd-16進]
以上のような32バイトの文字列を生成することにより、ゴース...
**FMOエントリ追加 [#be3dad20]
***[ID].kerohwnd [#cc2cb176]
kero側のhwndがunsigned int値として格納されています。~
主に某ソフトでkero側のHWND値が欲しいという需要から追加さ...
**FMOの排他制御 [#c3908ec5]
***説明 [#y2336bab]
FMOの排他制御には、"SakuraFMO"という名前付Mutexを利用しま...
書き込み、読み込み時にきちんとMutexを所有することでロック...
***サンプルコード [#gb43bc83]
#pre{{
HANDLE hMutex = CreateMutex(NULL,FALSE,"SakuraFMO");
if ( hMutex == NULL ) { エラー処理; }
if ( WaitForSingleObject(hMutex, 1000) != WAIT_TIMEOUT ) {
FMO読み書き;
ReleaseMutex(Mutex);
}
CloseHandle(Mutex);
}}
素直に書けばこうなりますが、CreateMutexするコストを気にす...
なお、その場合、最後にCloseHandleする必要はなく、プロセス...
また、処理中のプロセスがMutexをつかんだまま異常終了すると...
これを忘れてWAIT_OBJECT_0と比較しないよう注意してください...
[[こちらも参考にするとよいでしょう。>http://bottle.mikage...
**FMOが変更されたことの他プロセスへの通知 [#oe08d56f]
NOTIFY otherghostnameを実装したり、その他FMOを使うツール...
ですので……
#pre{{
#define SAKURA_API_BROADCAST_GHOSTCHANGE 1024
spSakuraAPIMsg = RegisterWindowMessage("Sakura");
SendNotifyMessage(HWND_BROADCAST,spSakuraAPIMsg,SAKURA_AP...
}}
上記のように、FMOを更新する側が
-message = Sakura APIと同じ
-wParam = 1024
-lParam = 自分のプロセスID
という通知を全アプリにブロードキャストすることで、FMOの更...
#pre{{
#define SAKURA_API_BROADCAST_GHOSTCHANGE 1024
spSakuraAPIMsg = RegisterWindowMessage("Sakura");
int CALLBACK WindowProc( HWND hWnd, UINT message, WPARAM ...
switch( message ){
case spSakuraAPIMsg:
if ( wParam == SAKURA_API_BROADCAST_GHOSTCHANGE ) {
if ( lParam != GetCurrentProcessId() ) {
なんかやる;
}
}
}
}}
受ける側はこのようにして、更新の通知をチェックすることが...
ページ名: