![]() |
Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Laut des
![]()
Delphi-Quellcode:
sind mit der Fehlermeldung:
type
TSHMessageBoxCheck = function(hWnd: THandle; Text: PChar; Title: PChar; Tpye: DWORD; Default: Integer; RegVal: PChar): Integer; procedure TForm1.Button1Click(Sender: TObject); var hLib: THandle; SHMessageboxCheck: TSHMessageBoxCheck; begin hLib := LoadLibrary('shlwapi.dll'); if hLib <> INVALID_HANDLE_VALUE then begin @SHMessageboxCheck := GetProcAddress(hLib, 'SHMessageBoxCheckA'); if Assigned(SHMessageboxCheck) then begin SHMessageboxCheck(Handle, 'Test', 'Titel', MB_OK, 0, '1CD2DD9C-92CB-4931-B03D-E4164D134501'); end else RaiseLastOSError; end; end; Zitat:
Dabei dachte ich, sie könnte sie ganz nützlich sein. |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Zitat:
Hier noch ein C Fragement:
Code:
+ * @ [SHLWAPI.185]
+ * + * Pop up a 'Don't show this message again' dialogue box. + * + * PARAMS + * hWnd [I] Window to be the dialogues' parent + * lpszText [I] Text of the message to show + * lpszTitle [I] Title of the dialogue box + * dwType [I] Type of dialogue buttons (See below) + * iRet [I] Value to return if dialogue is not shown + * lpszId [I] Name of registry subkey which determines whether to show the dialog + * + * RETURNS + * Success: The value returned from the dialogue procedure (e.g. IDOK). + * Failure: iRet, if the default dialogue resource could not be loaded or the + * dialogue should not be shown. + * + * NOTES + * - Both lpszTitle and lpszId must be less than MAX_PATH in length. + * - Possible values for dwType are: + *| Value Buttons + *| ----- ------- + *| 0 OK + *| 1 OK/Cancel + *| 2 Yes/No + */ +INT_PTR WINAPI SHMessageBoxCheckA(HWND hWnd, LPCSTR lpszText, LPCSTR lpszTitle, + DWORD dwType, INT_PTR iRet, LPCSTR lpszId) +{ + WCHAR szTitleBuff[MAX_PATH], szIdBuff[MAX_PATH]; + WCHAR *szTextBuff = NULL; + int iLen; + INT_PTR iRetVal; + + if (lpszTitle) + MultiByteToWideChar(CP_ACP, 0, lpszTitle, -1, szTitleBuff, MAX_PATH); + + if (lpszText) + { + iLen = MultiByteToWideChar(CP_ACP, 0, lpszText, -1, NULL, 0); + szTextBuff = HeapAlloc(GetProcessHeap(), 0, iLen * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, lpszText, -1, szTextBuff, iLen); + } + + MultiByteToWideChar(CP_ACP, 0, lpszId, -1, szIdBuff, MAX_PATH); + + iRetVal = SHMessageBoxCheckW(hWnd, szTextBuff, lpszTitle ? szTitleBuff : NULL, + dwType, iRet, szIdBuff); + if (szTextBuff) + HeapFree(GetProcessHeap(), 0, szTextBuff); + return iRetVal; +} + |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Zitat:
Würde mich mal interessieren. Die Formatierung der Funktionsnamen klingt nach LIB-Einlesen. |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
ah, danke. allerdings bekomm eich jetzt eine AccessViolation:
Delphi-Quellcode:
:gruebel:
type
TSHMessageBoxCheck = function(hWnd: THandle; Text: PWideChar; Title: PWideChar; Tpye: DWORD; Default: Integer; RegVal: PWideChar): Integer; procedure TForm1.Button1Click(Sender: TObject); var hLib: THandle; SHMessageboxCheck: TSHMessageBoxCheck; begin hLib := LoadLibrary('shlwapi.dll'); if hLib <> INVALID_HANDLE_VALUE then begin @SHMessageboxCheck := GetProcAddress(hLib, PChar(185)); if Assigned(SHMessageboxCheck) then begin SHMessageboxCheck(Handle, 'Test', 'Titel', MB_OK, 0, '1CD2DD9C-92CB-4931-B03D-E4164D134501'); end else RaiseLastOSError; end else RaiseLastOSError; end; |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Zitat:
|
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Zitat:
|
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
So geht's:
Delphi-Quellcode:
Hat noch irgendjemand Verbesserungsvorschläge?
function MessageBoxCheck(hWnd: THandle; Text: PChar; Title: PChar;
dwType: DWORD; Default: Integer; RegVal: PChar): Integer; type TSHMessageBoxCheck = function(hWnd: THandle; Text: PChar; Title: PChar; dwType: DWORD; Default: Integer; RegVal: PChar): Integer; stdcall; var hLib: THandle; SHMessageboxCheck: TSHMessageBoxCheck; begin hLib := LoadLibrary('shlwapi.dll'); if hLib <> 0 then begin @SHMessageboxCheck := GetProcAddress(hLib, PChar(185)); if Assigned(SHMessageboxCheck) then begin result := SHMessageboxCheck(hWnd, Text, Title, dwType, 0, RegVal); end else result := GetLastError; end else result := GetLastError; FreeLibrary(hLib); end; procedure TForm1.Button1Click(Sender: TObject); begin MessageBoxCheck(Handle, 'Dies ist nur ein Testtext.', 'Und dies ist der Titel', MB_OK or MB_ICONINFORMATION, 0, '2A622957-D0A5-41CA-8571-898247531A2C'); end; Code verbessert. |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Hallo zusammen,
leider habe ich gleich zwei Probleme. :( 1.Mit dem o.a. Quelltext hat der Button nur ein muedes zucken fuer mich uebrig. 2.Dumpbin liefert mir keine Ergebnisse. Zu 1.) Muss zu diesem Quellcode noch irgendetwas hinzugefügt werden, ausser den Vorgaben, die durch die Unit schon automatisch erfolgen ??? Zu 2.) Mit dem Aufruf von Dumpbin bekomme ich von keiner Dll den Inhalt angezeigt, egal ob ich mit der Option out: filname, oder das Ergebnis mit ">" in eine Datei umleite ! :?: Betriebssystem: WinXP mit ServicePack 1; Shlwapi.Dll, Version 6.0.2800.1106; Dumpbin.exe vom 29.03.2002 (2 KB)! Kann mir jemand sagen (schreiben), was ich falsch mache, leider weiss ich auch, dass 99 % der Fehler vor der Tastatur sitzen !! Trotzdem waere es nett, wenn ich einen Tipp bekommen koennte Danke,OPA :drunken: |
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?
Sorry,
ich wollte hier keine Themen anschneiden die hier nicht hingehoeren! Mit Dumpbin wollte ich lt. dem Beispiel von TOMS kontrollieren, ob in meiner vorhandenen DLL die von dir genannten Funktionen hinterlegt sind! Was ich meine !! Wenn das OnClick Ereignis auf Button1 ausgefuehrt wird, erscheint bei mir keine Meldung, keine Box ! Ich ging davon aus, dass das der Sinn des Programm's war . Ansonsten SORRY :duck: und Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz