|
>WM_REMOTE_EVALMACROは、別スレッドからメッセージを送ったとしても、必ずメイン
>スレッドで処理されるので、メッセージを送ること自体は問題無いはずです。
ありがとうございます.ちょっと困ってしまったのでお知恵をお貸しいただけるとあ
りがたいです.
次のような小さいサンプルを作ってみました.
#include <windows.h>
#include <string>
#include <process.h>
#define WM_REMOTE_EVALMACRO (WM_USER + 282)
void showmessage(HWND hwnd){
auto x = SendMessage(hwnd,WM_REMOTE_EVALMACRO,NULL,(LPARAM)L"message \"str\
";");
MessageBox(NULL,(std::to_string(x)).c_str(),NULL,0);
}
unsigned int WINAPI testthread(void *arg){
showmessage((HWND)arg);
return 0;
}
extern "C" __declspec(dllexport) int test(int handle){
showmessage((HWND)handle);
_beginthreadex(nullptr,0,testthread,(void*)handle,0,nullptr);
return 0;
}
これをtest.cppとして保存し,cl /EHcs /LD test.cpp user32.libとしてtest.dllを
作り,秀丸からは次のように呼び出しました.
loaddll "test.dll";
##_ = dllfunc("test",hidemaruhandle(0));
freedll;
するとtestthreadから送ったメッセージは失敗してしまいました.いただいたお返事
だとこれでも問題なさそうなのですが.
使用バージョンは秀丸8.91とVisual Studio 2017です.
|
|