21. marts 2003 - 12:25
Der er
11 kommentarer og 1 løsning
Tilføj en knap til outlook express toolbar
Hej Jeg prøver at tilføje en knap til outlook express's toolbar. Jeg har søgt snart overalt på nettet, og det bedste (og eneste)jeg har fundet er nedenstående eksempel. Jeg kan ikke få eksemplet til at virke, så det er der måske nogen herinde der kan?, eller ved om det kan gøres på en anden måde. Efter hvad jeg kan finde ud, skal det laved ved hjælp af windows hook programming. Håber at der er nogen der kan løse dette lille problem. Martin
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
21. marts 2003 - 12:34
#4
UPS, det var vist lige FJOLS til mig. Her er det så. LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) { HWND hWnd; TCHAR szClass[BUFSIZE]; if(nCode < 0) return CallNextHookEx(g_hhHook, nCode, wParam, lParam); hWnd = (HWND)wParam; switch(nCode) { case HCBT_CREATEWND: GetClassName(hWnd, szClass, sizeof(szClass) - 1); if(!strcmp(szClass, "ATH_Note")) { g_bHookInit = FALSE; g_pfnOutlookExProc = (WNDPROC) SetWindowLong(hWnd, GWL_WNDPROC, (LONG)OutlookExpressProc); } break; } return CallNextHookEx(g_hhHook, nCode, wParam, lParam); } LRESULT CALLBACK OutlookExpressProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) { static int iTimerID = 0; if (iTimerID == 0) iTimerID = SetTimer(hwnd, 1, 100, NULL); switch (uiMsg) { case WM_CREATE: iTimerID = 0; break; case WM_TIMER: KillTimer(hwnd, iTimerID); if(!g_bHookInit) { HWND hwndSizableRebar; HWND hwndReBarWindow32; REBARBANDINFO rbBand; hwndSizableRebar = FindWindowEx(hwnd, NULL, "SizableRebar", NULL); hwndReBarWindow32 = FindWindowEx(hwndSizableRebar, NULL, "ReBarWindow32", NULL); rbBand.cbSize = sizeof(REBARBANDINFO); rbBand.fMask = RBBIM_CHILD; SendMessage(hwndReBarWindow32, RB_GETBANDINFO, 2, (LPARAM)&rbBand); if(rbBand.hwndChild != NULL) { TBBUTTON tbButton; SendMessage(rbBand.hwndChild, TB_GETBUTTON, 0, (LPARAM)&tbButton); char szBuf[256]; LoadString(g_hInst, IDS_CUSTOMBTN, (LPSTR) &szBuf, strlen(szBuf) - 1); int iBtnStringID = SendMessage(rbBand.hwndChild, TB_ADDSTRING, (WPARAM) 0, (LPARAM) (LPSTR) szBuf); tbButton.idCommand = ID_OE_CUSTOMBTN; tbButton.dwData = 100; tbButton.iString = iBtnStringID; tbButton.fsState = TBSTATE_ENABLED; tbButton.fsStyle = TBSTYLE_AUTOSIZE | TBSTYLE_BUTTON; SendMessage(rbBand.hwndChild, TB_INSERTBUTTON, 1, (LPARAM)&tbButton); g_hwndToolbar = rbBand.hwndChild; g_bHookInit = TRUE; } } break; } switch (LOWORD(wParam)) { case ID_OE_CUSTOMBTN: MessageBox(NULL, "CUSTOMBTN", "Outlook Express", IDOK); break; case ID_OE_SEND: MessageBox(NULL, "Send", "Outlook Express", IDOK); break; default: break; } return CallWindowProc(g_pfnOutlookExProc, hwnd, uiMsg, wParam, lParam); }
10. april 2003 - 14:46
#11
Det der er problemet er at jeg har fundet eksemplet, men ud fra hvad jeg kan finde ud af mangler noget af det. Der hvor jeg fandt det har vedkommenede altså ikke postet hele sin kode gætter jeg på. Og jeg ved ikke hvad der mere skal til for at det kan virke. Det kan som du selv siger ikke compile, jeg kan ikke lige huske fejlen nu, men jeg kan poste den iaften.