![]() |
Windows 7 64Bit Redirection
Hallo liebe Gemeinde,
ich versuche mit einem 32 Bit Programm unter 64 Bit ein Systemprogramm aufzurufen, z.B. die Bildschirmtastatur. Ich habe mich in die Problematik der 64Bit Redirection hier im Forum eingelesen und einige gute Ansätze gefunden. Leider funktionieren die bei mir nicht? Debuggen kann ich leider nur über Meldungen, da mein Delphi 2009 nicht auf dem 64Bit System installiert ist.
Delphi-Quellcode:
Die Funktion ChangeFSRedirection() habe ich hier aus dem Forum und nur um die Meldungen erweitert.
procedure TFormDlg.BitBtn1Click(Sender: TObject);
var is64Bit : boolean; begin is64Bit := Is64BitViaRegistry; showmessage('is64Bit : ' + BoolToStr(is64Bit)); if (is64Bit = true) then ChangeFSRedirection(true); // Redirect stoppen showmessage ('start von osk.exe'); ShellExecute(handle, 'open', PChar('%WinDir%\system32\') + 'osk.exe'), NIL, NIL, SW_SHOW); if (is64Bit = true) then ChangeFSRedirection(false); // Redirect wieder starten end;
Delphi-Quellcode:
Statt
function ChangeFSRedirection(bDisable: Boolean): Boolean;
type TWow64DisableWow64FsRedirection = Function(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall; TWow64EnableWow64FsRedirection = Function(var Wow64FsEnableRedirection: LongBool): LongBool; StdCall; var hHandle: THandle; Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection; Wow64EnableWow64FsRedirection: TWow64EnableWow64FsRedirection; Wow64FsEnableRedirection: LongBool; begin Result := false; try hHandle := GetModuleHandle('kernel32.dll'); @Wow64EnableWow64FsRedirection := GetProcAddress(hHandle, 'Wow64EnableWow64FsRedirection'); @Wow64DisableWow64FsRedirection := GetProcAddress(hHandle, 'Wow64DisableWow64FsRedirection'); if bDisable then begin if (hHandle <> 0) and (@Wow64DisableWow64FsRedirection <> nil) then begin showmessage('Abschaltung starten'); Result := Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection); showmessage('disabled : ' + BoolToStr(Result)); end; end else begin if (hHandle <> 0) and (@Wow64EnableWow64FsRedirection <> nil) then begin showmessage('Abschaltung wieder einschalten'); Result := Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection); showmessage('enabled : ' + BoolToStr(Result)); Result := True; end; end; Except end; end;
wird mir folgende, unlogische Abfolge unter 64Bit angezeigt:
Kann mir jemand bei der Fehlersuche behilflich sein? Liegt es am Delphi 2009? Vielen Dank im Voraus. Amigage |
AW: Windows 7 64Bit Redirection
Versuch mal, ob es vielleicht mit einem verändertem Pfad klappt:
Zitat:
![]() |
AW: Windows 7 64Bit Redirection
Moin,
also erstmal solltest du nicht die alten Funktionen verwenden, sondern die neuen: ![]() ![]() Zitat:
Zitat:
Zitat:
|
AW: Windows 7 64Bit Redirection
Zitat:
Deshalb fehlen dann die Punkte 3. bis 5. |
AW: Windows 7 64Bit Redirection
Liste der Anhänge anzeigen (Anzahl: 1)
@Assarbad:
Besten Dank für den Hinweis, bezüglich Wow64RevertWow64FsRedirection, jedoch besteht ja bei mir das Problem bereits bei Wow64DisableWow64FsRedirection, denn da scheint ja schon irgendwie etwas schief zu laufen. Ich habe trotzdem mal eine Änderung vorgenommen. The same procedure. :cry: Ich habe mal ein Beispielprojekt angelegt. Eine kompilierte Exe ist auch beigelegt. Würde mich freuen, wenn ihr das mal testen und über den Quellcode schauen könntet (speziell die Funktion ChangeFSRedirection() ). @shmia: Für mich ist die Schlussfolgerung nicht ganz nachzuvollziehen, denn dann hätte ja zumindest die Bildschirmtastatur starten müssen, oder? Ich danke Euch im Voraus für jede Hilfe und jeden Hinweis. |
AW: Windows 7 64Bit Redirection
Du benutzt es aber so wie du es schriebst, oder? Also nicht innerhalb verschiedener Threads oder ähnliches?
|
AW: Windows 7 64Bit Redirection
Nein, ganz normal bei Klick auf eine Schaltfläche. Keine Threads!
|
AW: Windows 7 64Bit Redirection
Zitat:
|
AW: Windows 7 64Bit Redirection
Ich denke shima hat recht
nimm statt showmessage mal Memo1.lines.add is64Bit : true Abschaltung starten disabled : true start von osk.exe Abschaltung wieder einschalten enabled : true OSK öffnet sich |
AW: Windows 7 64Bit Redirection
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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