С помощью CD_PARSECMDLINEW можно вызвать плагин AkelPad и его функцию с параметрами,
Попробовал так
- не работает. Пробовал wchar - тоже не сработало. Что сделал неправильно?
Код:
COPYDATASTRUCT cds;
PARSECMDLINEPOSTW *pclp;
wchar_t *wpCmdLine=L"/Call(\"Scripts::Main\", 1, \"scriptname.js\") "
if (pclp=(PARSECMDLINEPOSTW *)GlobalAlloc(GMEM_FIXED, sizeof(PARSECMDLINEPOSTW)))
{
pclp->bPostMessage=TRUE;
pclp->nCmdLineLen=lstrcpynW(pclp->szCmdLine, wpCmdLine, COMMANDLINE_SIZE);
pclp->nWorkDirLen=GetCurrentDirectoryWide(MAX_PATH, pclp->szWorkDir);
cds.dwData=CD_PARSECMDLINEW;
cds.cbData=sizeof(PARSECMDLINEPOSTW);
cds.lpData=(PVOID)pclp;
SendMessage(hWnd, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds);
GlobalFree((HGLOBAL)pclp);
}
Попробовал так
Код:
Global Const $WM_COPYDATA = 0x004A
$hAkelPad = WinGetHandle("[CLASS:AkelPad4]")
$hGUI = __HGetScriptProcHandle()
WinActivate("[CLASS:AkelPad4]")
$prmCommand = '/Call("Scripts::Main", 1, "transparency.js", "127") '
$dwData = 'CD_PARSECMDLINEW'
$lpDataLen = StringLen($prmCommand)
$lpData = DllStructCreate("char[" & $lpDataLen & "]")
DllStructSetData($lpData, 1, $prmCommand)
$lpDataPtr = DllStructGetPtr($lpData)
$structCOPYDATA = DllStructCreate("ulong_ptr;dword;ptr")
DllStructSetData($structCOPYDATA, 1, $dwData)
DllStructSetData($structCOPYDATA, 2, $lpDataLen)
DllStructSetData($structCOPYDATA, 3, $lpDataPtr)
$ptrCOPYDATA = DllStructGetPtr($structCOPYDATA)
DllCall("user32.dll", "int", "SendMessageW", "hwnd", $hAkelPad, "uint", $WM_COPYDATA, "wparam", $hGUI, "lparam", $ptrCOPYDATA)
Func __HGetScriptProcHandle()
$sTitle = "ScriptWinRandomTitle"
For $o = 1 To 7
$sTitle &= Chr(Random(0x41, 0x5A))
Next
AutoItWinSetTitle($sTitle)
Return WinGetHandle($sTitle)
EndFunc
- не работает. Пробовал wchar - тоже не сработало. Что сделал неправильно?