![]() |
Re: %programfiles% unter Windows 7 x64
das funzt nicht weil 0 = True :) also wird der das niemals machen und eine Fehlermeldung für Feherlcode 0 gibts meines wissens nach nicht aber ich kanns iwie nicht prüfen da der keine Messageboxen mehr zeigen möchte :)?
der geht da zwar hin aber ignoriert das einfach.. überpringt den code sozusagen! edit.. so ka was ich gemacht hab aber nu gehts aber "Der Vorgang wurde erfolgreich beendet" ist wohl nicht der Fehler :) |
Re: %programfiles% unter Windows 7 x64
![]() Du hast dir auch schonmal den Abschnitt mit den Erläuterungen angesehn? Da steht ein "wichtiger" Punkt, welchen ich in deinem Testprogramm nicht entdecken konnte. oder erstellt dein Delphi außschließlich WinNT-Programme? ( PE-Flags + WIN32_WINNT ) |
Re: %programfiles% unter Windows 7 x64
Zitat:
Zitat:
|
Re: %programfiles% unter Windows 7 x64
meinst du das mit "_WIN32_WINNT"?
wenn ja dann bitte ich dich mir zu erklären wie und wo ich das definieren muss ^^ wenn du das mit Revert meinst, dann habe ich das auch schon probiert ändert aber nichts an der tatsache, dass die umschaltung dann trotzdem funktionieren müsste! @luckie: aber errorcode 0 entspricht doch True wenn ich mich nich total irre.. zumindest dann bei LongBool |
Re: %programfiles% unter Windows 7 x64
Nein. Null ist false und lies doch endlich mal die Dokumentation:
Zitat:
|
Re: %programfiles% unter Windows 7 x64
ja das weiss ich doch :)
meine frage ist schon seit heut mittag warum das nicht funktioniert ;) ich sehe keinen grund ausser dieses komische _WIN32_WINNT dingens was ich nicht weiss wo/wie das hin muss/darf |
Re: %programfiles% unter Windows 7 x64
Was gibt denn jetzt
![]() |
Re: %programfiles% unter Windows 7 x64
wie bereits vorhin erwähnt gibt GetLastError den Wert 0 zurück und SyserrorMessage macht daraus ein "Die Vorgang wurde erfolgreich beendet"
|
Re: %programfiles% unter Windows 7 x64
Das kann doch nicht sein. Zeig mal Code.
|
Re: %programfiles% unter Windows 7 x64
dein wunsch sei mir befehl :
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TWow64DisableWow64FsRedirection = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall; TWow64EnableWow64FsRedirection = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall; var //64bit umleitung Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection; Wow64EnableWow64FsRedirection: TWow64EnableWow64FsRedirection; Wow64FsEnableRedirection: LongBool; KernelHandle: THandle; Form1: TForm1; implementation {$R *.dfm} uses ShlObj; function ExpandEnvStr(const szInput: String): String; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))); //unnötige #0 zeichen am ende entfernen Result := Trim(Result); end; function GetSpecialFolder(Folder: Integer): String; var Path: array[0..MAX_PATH-1] of Char; begin Result := ''; if SHGetSpecialFolderPath(Application.Handle, @Path, Folder, False) then Result := Path; end; function ChangeFSRedirection(const DisableIT: Boolean): Cardinal; begin if DisableIT then begin if (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil) then Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection); end else begin if (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil) then Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection); end; Result := GetLastError; end; procedure Init64BitRedir; begin if (KernelHandle = 0) then KernelHandle := LoadLibrary(kernel32); if (KernelHandle <> 0) then begin @Wow64DisableWow64FsRedirection := GetProcAddress(KernelHandle, 'Wow64RevertWow64FsRedirection'); @Wow64EnableWow64FsRedirection := GetProcAddress(KernelHandle, 'Wow64EnableWow64FsRedirection'); end; end; procedure Close64BitRedir; begin if (KernelHandle <> 0) then begin FreeLibrary(KernelHandle); KernelHandle := 0; end; end; procedure TForm1.Button1Click(Sender: TObject); var Dir1,Dir2,Dir3,Dir4: String; Err1, Err2: Cardinal; const CSIDL_PROGRAM_FILES = '$26'; CSIDL_PROGRAM_FILESX86 = '$2A'; CRLF = #13#10; begin Err1 := ChangeFSRedirection(True); Dir1 := 'x64: ' + ExpandEnvStr('%programfiles%'); Dir2 := 'x86: ' + ExpandEnvStr('%programfiles(x86)%'); Dir3 := 'x64: ' + GetSpecialFolder(StrToInt(CSIDL_PROGRAM_FILES)); Dir4 := 'x86: ' + GetSpecialFolder(StrToInt(CSIDL_PROGRAM_FILESX86)); Err2 := ChangeFSRedirection(False); Showmessage('Disable-Return: ' + IntToStr(Err1) + CRLF + Dir1 + CRLF + Dir2 + CRLF + Dir3 + CRLF + Dir4 + CRLF+ 'Enable-Return: ' + IntToStr(Err2)); Showmessage(SyserrorMessage(Err1)); end; initialization Init64BitRedir; finalization Close64BitRedir; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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