gut.. es wundert mich nur, dass dein code so ohne weiteres nicht funktioniert. um eins klarzustellen - ich habe mein erstes (schul!) lehrjahr in delphi hinter mir und habe mir eigentlich den großteil selbst beigebracht, also ist mein wissen nicht ganz so tief wie das von vielen anderen hier. ich habe auch komplette codes für das programm nur kopiert und in den grundzügen verstanden, jedoch nicht so weit, dass ich sie selbst schreiben könnte.
so jetzt habe ich testweise einfach um zu gucken ob das compilieren klappt deinen Programmcode in mein Programm eingefügt. Der Verweis auf die MpuWinNT.pas in USES ist vorhanden und dennoch kommt beim compilieren der folgende fehler in der darauf folgenden Zeile:
Delphi-Quellcode:
[Fehler] U_zero.pas(196): Inkompatible Typen: 'TStartupInfoW' und 'Pointer'
CREATE_DEFAULT_ERROR_MODE, nil, nil, @si, @pif);
und ich bin ziemlich ratlos, vor allem da mir pointer nur namentlich und TStartupInfoW überhaupt nicht bekannt ist. ideen?
//€: und wie mittlerweile immer nen edit - hier der komplette code im zusammenhang, ist wahrscheinlich aufschlussreicher als die zeile alleine..
Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
LongWord;
var
si : TStartupInfoW;
pif : TProcessInformation;
begin
ZeroMemory(@si, sizeof(si));
si.cb := sizeof(si);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := 1;
SetLastError(0);
CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
LOGON_WITH_PROFILE, nil, PWideChar(Application+' "'+CmdLine+'"'),
CREATE_DEFAULT_ERROR_MODE, nil, nil, @si, @pif);
Result := GetLastError;
end;
Michael Puff