>>мне казалось, что в цинке достаточно вот эту строчку прописать
Код:
myDLL = new mdm.DLL("имя_моей_библиотеки.dll")в самом начале кода и при выходе выполнить
Код:
myDLL.close();>>
так и надо поступать. myDll.call() вызываем по небходимости вызова длл-ной функции, не забывая про список параметров.
у меня версия 2.5.0.34, чего и вам желаю

Код:
hDll = new mdm.DLL(dllPath);
if (!hDll.isLoaded) {
mdm.prompt("Dll load failed!");
return;
}
только true isLoaded будет при реалной загрузке. если длл уже в оперативке (как например системная какая-нибудь) будет false. но работать все равно должно.
если есть сомнения в работоспособности кода в длл - дебажить надо и все. как - это вопрос отдельный. элементарно: встроить в код длл какой-нибудь мессаджбокс, чтоб выскакивал в нужном месте. ну или debag tools разного рода юзать.

Код:
// в длл встраиваем такие функции. ReplaceWndProc вызываем из цинка или
//сразу при загрузке длл из EntryPoint.
//предварительно надо найти окно плеера в цинке
LRESULT CALLBACK GetMsgProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam){
switch (nMsg) {
case WM_MOUSEMOVE:
// ...
break;
case WM_MBUTTONUP:
// ...
break;
case WM_RBUTTONUP:
// ...
break;
case WM_LBUTTONDBLCLK:
// ...
break;
case WM_SYSKEYDOWN:
// ...
break;
case WM_KEYDOWN:
switch (wParam)
{
case VK_LEFT:
break;
case VK_RIGHT:
break;
case VK_UP:
break;
case VK_DOWN:
break;
case VK_HOME:
break;
case VK_END:
break;
case VK_INSERT:
break;
case VK_DELETE:
break;
case VK_F2:
break;
case VK_LWIN:
//MessageBox(hwin,(LPCSTR)"left winbuttonb down","",MB_OK);
break;
case 93:// это и есть кнопка "меню"
//MessageBox(hwin,(LPCSTR)"menubutton down","",MB_OK);
return 1; // прекращаем обработку сообщения, меню не вываливается
break;
default:
//
break;
}
default:
//
break;
}
// передаем все далее родной процедуре на обработку
return CallWindowProc((WNDPROC)oldWnd, hwin, nMsg, wParam, lParam);
}
// поиск окна плеера fName - заголовок (title) формы приложения
// имя класса окна плеера можно узреть в WinSpector'e, например.
HWND fwin = FindWindow(NULL,fName);
HWND tpan = FindWindowEx(fwin,NULL,(LPCSTR)"TPanel",NULL);
hwin = FindWindowEx(tpan,NULL,(LPCSTR)"FlashPlayerControl_MacromediaFlashPlayerActiveX_7309416",NULL);
// собственно подмена оконной процедуры
extern "C" __declspec(dllexport)LONG ReplaceWndProc(BOOL bSet){
if(bSet){
oldWnd = SetWindowLong(hwin, GWL_WNDPROC, (LONG)GetMsgProc);
return oldWnd;
} else{
return SetWindowLong(hwin, GWL_WNDPROC, oldWnd);
}
}
откопал кусок исходника рабочего. посмотрите. может пригодится.
Вариант с хуком принципиально не отличается. вместо подмены надо юзать
SetWindowsHookEx(WH_GETMESSAGE, hpHookProc, hHookDll, hthread);