void ooTrace (char *file, long line, OOUINT32 traceLevel, const char * fmtspec, ...) { char *filename; va_list arglist; if (traceLevel > gs_traceLevel) return; logDateTime(); if (gs_printTime) { filename = strrchr(file, '/'); if (filename) { filename++; } else { filename = file; } fprintf (gH323ep.fptraceFile, "%s:%-4ld ", filename, line); } va_start (arglist, fmtspec); vfprintf (gH323ep.fptraceFile, fmtspec, arglist); va_end (arglist); fflush (gH323ep.fptraceFile); gs_printTime = (OOBOOL)(0 != strchr(fmtspec, '\n')); }
// format input, convert to 8-bit and send. void nclog (const wchar_t *fmt, ...) { TCHAR StrW[1024]; va_list vl; va_start(vl,fmt); wchar_t buf[1024]; // to bad CE hasn't got wvnsprintf wvsprintf(buf,fmt,vl); if(bUseSocket) wsa_init(); char bufOut[512]; //insert data/time wsprintf(StrW, L"%s: %s", logDateTime(), buf); wsprintf(buf, L"%s", StrW); WideCharToMultiByte(CP_ACP,0,buf,-1,bufOut,400, NULL, NULL); RETAILMSG(1, (buf)); //moved from 1) if(iUseLogging==1){ #ifdef MYDEBUG wsa_send(bufOut); DEBUGMSG(1, (buf)); #else if(bUseSocket) wsa_send(bufOut); // 1) #endif writefile(buf); }//iUseLogging }
DWORD msgThread(LPVOID lpParam){ HWND hWnd = (HWND)lpParam; hwndMsg=hWnd; DEBUGMSG(1,(L"Waiting for Bluetooth notifications with hwnd=%i...\n", hWnd)); nclog(L"%s: Waiting for Bluetooth notifications...\n", logDateTime()); TCHAR szMsg[MAX_PATH]; wsprintf(szMsg, L"\r\n%s: Waiting for Bluetooth notifications...", logDateTime()); printMsg(szMsg, hWnd); BTEVENT btEvent; DWORD dwBytesRead; DWORD dwFlags; BOOL fRet; while (FALSE == bStop) { DWORD dwWait = WaitForSingleObject (hMsgQ, 5000);//wait up to 5 seconds INFINITE); switch (dwWait){ case WAIT_OBJECT_0: // We have got a Bluetooth event! dwFlags = 0; dwBytesRead = 0; fRet = ReadMsgQueue (hMsgQ, &btEvent, sizeof(BTEVENT), &dwBytesRead, 10, &dwFlags); if (! fRet) { DEBUGMSG(1,(L"Error - Failed to read message from queue!\n")); //bStop=TRUE; } else { dumpBTevent(btEvent, hWnd); } break; case WAIT_TIMEOUT: break; case WAIT_ABANDONED: DEBUGMSG(1,(L"Error - Unexpected return value from WaitForSingleObject!\n")); //bStop=TRUE; break; case WAIT_FAILED: DEBUGMSG(1,(L"Error - Unexpected return value from WaitForSingleObject!\n")); //bStop=TRUE; break; }//switch }//while return 0; }
void dumpBTevent(BTEVENT btEvent, HWND hwnd){ BT_CONNECT_EVENT* cntEvt = NULL; BT_DISCONNECT_EVENT* discntEvt=NULL; BT_ROLE_SWITCH_EVENT* rolSwitchEvt=NULL; BT_MODE_CHANGE_EVENT* btModeChgEvt=NULL; BT_LINK_KEY_EVENT* btLnkKeyEvt=NULL; TCHAR btAddress[18]; TCHAR hConn[12]; TCHAR encMode[5]; TCHAR linkType[5]; TCHAR szTemp[MAX_PATH]; TCHAR szMsg[MAX_PATH]; wsprintf(szMsg, L"\r\n"); switch (btEvent.dwEventId){ case BTE_KEY_NOTIFY: wsprintf(szMsg, L"\r\n%s: BTE_KEY_NOTIFY:", logDateTime()); break; case BTE_KEY_REVOKED: btLnkKeyEvt = (BT_LINK_KEY_EVENT*)btEvent.baEventData; //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wsprintf(btAddress, L"%s", btAddr2Mac( btLnkKeyEvt->bta, btAddress)); wsprintf(szMsg, L"\r\n%s: BTE_KEY_REVOKED: mac=%s", logDateTime(), btAddress); break; case BTE_LOCAL_NAME: wsprintf(szMsg, L"\r\n%s: BTE_LOCAL_NAME:", logDateTime()); break; case BTE_COD: wsprintf(szMsg, L"\r\n%s: BTE_COD:", logDateTime()); break; case BTE_STACK_UP: wsprintf(szMsg, L"\r\n%s: BTE_STACK_UP:", logDateTime()); break; case BTE_STACK_DOWN: wsprintf(szMsg,L"\r\n%s: BTE_STACK_DOWN:", logDateTime()); break; case BTE_CONNECTION: cntEvt = (BT_CONNECT_EVENT*)btEvent.baEventData; btAddr2Mac(cntEvt->bta, btAddress); wsprintf(btAddress, L"%s", btAddress);// L"0x00 n/a"); wsprintf(hConn, L"0x%08x", cntEvt->hConnection); wsprintf(encMode, L"0x%02x", cntEvt->ucEncryptMode); wsprintf(linkType, L"0x%02x", cntEvt->ucLinkType); wsprintf(szMsg, L"\r\n%s: BTE_CONNECTION: hnd=%s, mac=%s, enc=%s, lnk=%s", logDateTime(), hConn, btAddress, encMode, linkType); break; case BTE_PAGE_TIMEOUT: wsprintf(szMsg,L"\r\n%s: BTE_PAGE_TIMEOUT:", logDateTime()); break; case BTE_MODE_CHANGE: btModeChgEvt = (BT_MODE_CHANGE_EVENT*)btEvent.baEventData; wsprintf(btAddress, L"%s", btAddr2Mac(btModeChgEvt->bta, btAddress)); wsprintf(hConn, L"0x%08x", btModeChgEvt->hConnection); wsprintf(encMode, L"0x%02x", btModeChgEvt->bMode); wsprintf(szTemp, L"%i", btModeChgEvt->usInterval); wsprintf(szMsg, L"\r\n%s: BTE_MODE_CHANGE: cnt=%s, mac=%s, mod=%s, int=%s", logDateTime(), hConn, btAddress, encMode, szTemp); break; case BTE_ROLE_SWITCH: rolSwitchEvt = (BT_ROLE_SWITCH_EVENT*)btEvent.baEventData; wsprintf(btAddress, L"%s", btAddr2Mac(rolSwitchEvt->bta, btAddress)); wsprintf(szTemp, L"0x%02x", rolSwitchEvt->fRole); wsprintf(szMsg, L"\r\n%s: BTE_ROLE_SWITCH: mac=%s, new role=%s", logDateTime(), btAddress, szTemp); break; case BTE_DISCONNECTION: discntEvt = (BT_DISCONNECT_EVENT*)btEvent.baEventData; wsprintf(hConn, L"0x%08x", discntEvt->hConnection); wsprintf(szTemp, L"%i", discntEvt->ucReason); if( discntEvt->ucReason <= lastError) wsprintf(szTemp, L"'%s'", szBTerror[discntEvt->ucReason]); wsprintf(szMsg, L"\r\n%s: BTE_DISCONNECTION: hnd=%s, why=%s", logDateTime(), hConn, szTemp); break; case BTE_CONNECTION_AUTH_FAILURE: wsprintf(szMsg, L"\r\n%s BTE_CONNECTION_AUTH_FAILURE", logDateTime()); break; default: wsprintf(szMsg, L"\r\n%s: unknown BT event: %i", logDateTime(), btEvent.dwEventId); break; }//switch DEBUGMSG(1, (szMsg)); nclog(szMsg); printMsg(szMsg, hwnd); }
void stopMsgQueue(){ StopBluetoothNotifications(hBTNotif); nclog(L"BT notification ended: %s\n", logDateTime()); }
int _tmain(int argc, _TCHAR* argv[]) { // -class "IE6on6SoftKeyBar" -enable -list if(argc==1){ // no args nclog(L"showFullScreen utility v 1.0 * %s\n", logDateTime()); printHelp(); MessageBox(GetDesktopWindow(), L"showFullScreen needs some args. Please see 'showFullScreen.exe.log.txt'", L"showFullScreen", MB_SETFOREGROUND | MB_TOPMOST | MB_OK); return -3; } DEBUGMSG(1, (L"CmdLine parsing #1: \r\n")); //command parsing struct cmdList *Liste; Liste=NULL; CmdLineArgs args; for (UINT i = 0; i < args.size(); i++){ DEBUGMSG(1, (L"%20i: '%s'\r\n", i, args[i])); append(&Liste, args[i]); } getOptions(Liste); args.~CmdLineArgs(); //end of parsing if(bListWindows){ nclog(L"showFullScreen utility v 1.0 * %s\n", logDateTime()); ListWindows(); } //look for window HWND hWnd=NULL; if(wcslen(szWindowClass) && wcslen(szWindowTitle)){ //window title and class hWnd = FindWindow(szWindowClass, szWindowTitle); } else if(wcslen(szWindowClass)){ //only window class, ie "WFIcaClient" hWnd = FindWindow(szWindowClass, NULL); } else if(wcslen(szWindowTitle)){ //only window title hWnd = FindWindow(NULL, szWindowTitle); } HWND hWndTaskbar = FindWindow(L"HHTASKBAR", NULL); //sanity restore of HHTASKBAR? //ShowWindow(hWndTaskbar, SW_SHOWNORMAL); if(hWnd==NULL) return -1; //no window found if(bChangeSize){ //change size? RECT rectDesktop; HRESULT hRes = GetWindowRect(GetDesktopWindow(), &rectDesktop); //desktopwindow is only the taskbar window! // SM_CXFULLSCREEN , SM_CXMAXIMIZED , SM_CXSCREEN int iCX; int iCY; BOOL bRes; if(bShowFullScreen){ iCX = GetSystemMetrics(SM_CXSCREEN); // 480 iCY = GetSystemMetrics(SM_CYSCREEN); // 640 bRes = SetWindowPos(hWnd, GetDesktopWindow(), 0, 0, iCX, iCY, SWP_SHOWWINDOW); ShowWindow(hWndTaskbar, SW_HIDE); } else{ RECT rcMaxScreen; SystemParametersInfo(SPI_GETWORKAREA, 0, &rcMaxScreen, SPIF_SENDCHANGE); // {top=36 bottom=640 left=0 right=480} bRes = SetWindowPos(hWnd, GetDesktopWindow(), rcMaxScreen.left, rcMaxScreen.top, rcMaxScreen.right, rcMaxScreen.bottom-rcMaxScreen.top, SWP_SHOWWINDOW); ShowWindow(hWndTaskbar, SW_SHOWNORMAL); } } if(iShowHide!=0){ //change show/hide switch(iShowHide){ case 1: ShowWindow(hWnd, SW_SHOWNORMAL); break; case 2: ShowWindow(hWnd, SW_HIDE); break; } } if(iEnableDisable!=0){ //enable/disbale window switch(iEnableDisable){ case 1: EnableWindow(hWnd, TRUE); break; case 2: EnableWindow(hWnd, FALSE); break; } } return 0; }