![]() |
|
|
#1
|
|||
|
|||
|
как преобразовать переменную типа string в LPCWSTR
|
|
#2
|
||||
|
||||
|
для Delphi 7:
Код:
var s: String; p: LPCWSTR; begin s:='hello'; p:=PWideChar(WideString(s)); end; |
|
#3
|
|||
|
|||
|
тогда где мой касяк
Код:
CreateProcessWithLogonW(PWideChar(WideString(registry.ReadString('name1'))), 'elbor', 'пас', 0, nil, 'notepad',0, nil, nil, si, pif) ; |
|
#4
|
||||
|
||||
|
честный код:
Код:
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 declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
LOGON_WITH_PROFILE = $00000001;
LOGON_NETCREDENTIALS_ONLY = $00000002;
function CreateProcessWithLogonW(
lpUsername: LPCWSTR;
lpDomain: LPCWSTR;
lpPassword: LPCWSTR;
dwLogonFlags: DWORD;
lpApplicationName: LPCWSTR;
lpCommandLine: LPCWSTR;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: LPCWSTR;
const lpStartupInfo: TStartupInfo;
var lpProcessInfo: TProcessInformation
): BOOL; stdcall; external 'advapi32' name'CreateProcessWithLogonW';
function RunWithLogon(lpUsername: String; lpDomain: String; lpPassword: String;
lpApplicationName: String): Integer;
var
si: TStartupInfo;
pi: TProcessInformation;
begin
ZeroMemory(@si, SizeOf(TStartupInfo));
ZeroMemory(@pi, SizeOf(TProcessInformation));
si.cb:=SizeOf(TStartupInfo);
if CreateProcessWithLogonW(
PWideChar(WideString(lpUsername)),
PWideChar(WideString(lpDomain)),
PWideChar(WideString(lpPassword)),
LOGON_WITH_PROFILE,
PWideChar(WideString(lpApplicationName)),
nil, 0, nil, nil, si, pi) then Result:=0
else Result:=GetLastError;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(SysErrorMessage(RunWithLogon('Test', '', '123', 'c:\WINDOWS\NOTEPAD.EXE')));
end;
end. |
|
#5
|
|||
|
|||
|
Цитата:
Код:
ShowMessage(SysErrorMessage(RunWithLogon('tehspec', 'elbor', 'пас', 'c:\WINDOWS\NOTEPAD.EXE')));Код:
d:='tehspec'; ShowMessage(SysErrorMessage(RunWithLogon(d, 'elbor', 'пас', 'c:\WINDOWS\NOTEPAD.EXE'))); |
|
#6
|
||||
|
||||
|
а какое сообщение выдает? по-любому должно быть сообщение.
|
|
#7
|
|||
|
|||
|
все спасибо работает я просто тупанул.
|