У меня есть приложение Compact .Net 2.0 (для Windows Mobile 2003 и выше), в котором есть кнопка «Свернуть форму».Я использую P / Invoke, чтобы свернуть форму / приложение
//[DllImport("coredll.dll")]
ShowWindow(this.Handle /* Handle for the Form */, SW_MINIMIZED /*6*/)
У меня есть еще одна простая программа Splash.exe, написанная на C ++, которая запускает приложение compact.net.Цель программы Splash - проверить, запущено ли приложение .Net, или восстановить форму .Net, если она запущена, или запустить приложение .Net, если нет.
Я использую следующую процедуру, чтобы проверить, работает ли.Сетевое приложение работает:
HWND GetProcessIfAlive(TCHAR szExeName[MAX_PATH]) /* Exe name of the .Net App */
{
HANDLE hSnapShot = NULL;
PROCESSENTRY32 pEntry = {0};
// Get the snapshot of the system
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
pEntry.dwSize = sizeof(pEntry);
//Get first process
Process32First(hSnapShot, &pEntry);
//Iterate thru all processes
while(TRUE)
{
TCHAR *strTempExe = pEntry.szExeFile;
if(_tcscmp(strTempExe, szExeName) == 0)
{
DWORD ProcesID = pEntry.th32ProcessID;
return (HWND)OpenProcess (PROCESS_ALL_ACCESS, FALSE, ProcesID);
//return (HWND)ProcesID;
}
if(!Process32Next (hSnapShot, &pEntry)/* == FALSE*/)
{
return NULL;
}
}
return NULL;
}
После возвращения из этой процедуры я пытаюсь восстановить форму, используя
HWND hExistingHandle = GetProcessIfAlive(TEXT("CompactDotNetApp.exe"));
if(hExistingHandle != NULL)
{
if(ShowWindow(hExistingHandle, SW_RESTORE) == FALSE)
{
DWORD err = GetLastError();
}
}
Я получаю сообщение об ошибке 1400 ERROR_INVALID_WINDOW_HANDLE
Как исправить код, чтобы получить правильный дескриптор окна для работающего приложения Compact .Net?
Заранее спасибо.