LPCTSTR SnarlInterface::GetAppPath() { HWND hWnd = GetSnarlWindow(); if (hWnd) { HWND hWndPath = FindWindowEx(hWnd, NULL, _T("static"), NULL); if (hWndPath) { TCHAR strTmp[MAX_PATH] = {0}; int nReturn = GetWindowText(hWndPath, strTmp, MAX_PATH-1); if (nReturn > 0) { TCHAR* strReturn = AllocateString(nReturn + 1); _tcsncpy(strReturn, strTmp, nReturn + 1); strReturn[nReturn] = 0; return strReturn; } } } return NULL; }
LONG32 SnarlInterface::Send(T ss) { DWORD_PTR nReturn = M_FAILED; HWND hWnd = GetSnarlWindow(); if (IsWindow(hWnd)) { COPYDATASTRUCT cds; cds.dwData = 2; cds.cbData = sizeof(ss); cds.lpData = &ss; if (SendMessageTimeout(hWnd, WM_COPYDATA, (WPARAM)m_hwndFrom, (LPARAM)&cds, SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 1000, &nReturn) == 0) { if (GetLastError() == ERROR_TIMEOUT) nReturn = M_TIMED_OUT; } } return static_cast<LONG32>(nReturn); }
BOOL SnarlInterface::IsSnarlRunning() { return IsWindow(GetSnarlWindow()); }