ソス@ソスソスShellExecuteソスナ終ソスソスソスソスメつ包ソスソス@ソスヘ?
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
ShellExecuteソスナ起ソスソスソスソスソスソスソスqソスvソスソスソスZソスXソスフ終ソスソスソスソスmソスソスソスソス@ソスヘゑソスソスソスワゑソスソスナゑソスソス蛯、ソスソスソスH
ソスネ前ソスソスソスソスACreateProcessソスナ起ソスソスソスソスソスソスソス驛具ソス[ソス`ソスソスソスヘ紹介さソスソストゑソスソスワゑソスソスソスソスA
ソスソスソスソスノゑソスソスiソスVソスソスソス[ソスgソスJソスbソスgソスソスNソスソスソスソスソスソスソス驍スソス゚)ソスACreateProcessソスヘ使ソスソスソスソス
ShellExecuteソスナ起ソスソスソスソスソスソスソストゑソスソスワゑソスソスB
ソスqソスvソスソスソスZソスXソスフ起ソスソスソスソスソスヘ、ソスeソスtソスHソス[ソスソスソスソス¥ソスソスソスソスソスソスソスA
ソスqソスvソスソスソスZソスXソスフ終ソスソスソスソスソスソスmソスソスソスト親ソスtソスHソス[ソスソスソスソスツ趣ソスソスソスヤにゑソスソス謔、ソスニ思ソスソスソストゑソスソスワゑソスソスBソスiソスヌゑソスソス轤ゥソスミ包ソスソスソスソスソスソス¥ソスソスソスソスソスソスネゑソスソスソスヤ)
ソスネ会ソスソスフソソス[ソスXソスナは子ソスvソスソスソスZソスXソスフ起ソスソスソスヘでゑソスソスワゑソスソスソスソスA
ソスIソスソスソスソスソスソスワゑソスソスソスソスmソスソスソスネゑソスソスソスソス゚ゑソスソスAソスソスソスソスソスフフソスHソス[ソスソスソスソスソス¥ソスソスソスソスソスソストゑソスソスワゑソスソスワゑソスソスB
ソスソスソスソスソスソスソスShellExecuteソスフ戻ゑソスlソスソス謫セソスソスソス謔、ソスニ思ソスソスソスソスソスフゑソスソスソスソスソスソスネゑソスソスフでゑソスソス蛯、ソスソスソスH
ソスヌなゑソスソスソスソスmソスbソスソスンゑソスソストゑソスソスソスソスソスソスソスソスB
procedure TMastMenu.SpeedButton1Click(Sender: TObject);
var
s : string;
ProgName : PChar;
handle : THandle;
tpi : TProcessInformation;
begin
s := 'C:¥abcソスヨのシソスソスソス[ソスgソスJソスbソスg.lnk';
ProgName := PChar(sWorks);
//ソスVソスソスソス[ソスgソスJソスbソスgソスvソスソスソスOソスソスソスソスソスソスNソスソス
Handle := ShellExecute(Application.MainForm.Handle, nil,ProgName, nil, nil,SW_SHOW);
tpi.hProcess := handle;
//ソスvソスソスソスZソスXソスソスソスIソスソスソスソスソスソスフゑソスメゑソス
while WaitForSingleObject(tpi.hProcess, INFINITE) = WAIT_TIMEOUT do
begin
Application.ProcessMessages;
Self.Visible := false;
end;
Self.Visible := true;
end;
GetExitCodeProcessソスソスStillActiveソスフ間待ゑソスソスソスソスソスニゑソスソスH
ソスソスソスソスAShellExecute ソスナは、ソスソスソスソスソスソスソスvソスソスソスZソスXソスnソスソスソスhソスソスソスソスソス謫セソスナゑソスソスワゑソスソスソスB
ソスfソスソスソスノ、ソスVソスソスソス[ソスgソスJソスbソスgソスネとゑソスソスヘ、ソスソスソスsソスtソス@ソスCソスソスソスソス謫セソスソスソスソス CreateProcess ソスソス
ソスgソスソスソストゑソスソスソスソスソスソスソスソスB
ソス閧ィソス閧ィソスソスソスソスフゑソスソスソスソス謔、ソスソス
ソスソスソスソスネのゑソス
ソスVソスソスソス[ソスgソスJソスbソスgソスtソス@ソスCソスソスソスフ趣ソスソスsソスtソス@ソスCソスソスソスソス謫セソスソスソスソス
CreateProcessソスソストびまゑソスソス蛯、ソスB
type
TShowCommand = (scNormalWindow, scMinimize, scMaxmize, scUnknown);
TShortcurFile = class(TObject)
private
ShellLink:IShellLink;
PersistFile:IPersistFile;
FilePath:array[0..MAX_PATH] of char;
WorkDir:array[0..MAX_PATH] of char ;
wsz:Array[0..MAX_PATH] of WideChar;
pwHotKey:Word;
pShowCmd:integer;
pfd:TWin32FindData;
FSourceFileName: TFileName;
FFileName: TFileName;
FShowCommand: TShowCommand;
FHotKey: Word;
protected
public
constructor Create(FileLink: TFileName);
destructor Destroy; override;
published
property FileName: TFileName read FFileName;
property SourceFileName: TFileName read FSourceFileName;
property HotKey: Word read FHotKey;
property ShowCommand: TShowCommand read FShowCommand;
end;
{ TShortcurFile }
constructor TShortcurFile.Create(FileLink: TFileName);
begin
if not FileExists(ChangeFileExt(FileLink,'.lnk')) then
raise Exception.Create('ソスtソス@ソスCソスソスソスソスソスソスソスンゑソスソスワゑソスソスソス');
inherited Create;
ShellLink := CreateComObject(CLSID_ShellLink) As IShellLink;
try
OleCheck(ShellLink.QueryInterface(IPersistFile,PersistFile));
Assert(Assigned(PersistFile));
MultiByteToWideChar(CP_ACP,0,PChar(FileLink),-1,wsz,MAX_PATH);
OleCheck(PersistFile.Load(wsz,0));
OleCheck(ShellLink.GetPath(FilePath,MAX_PATH,pfd,SLGP_SHORTPATH));
FFileName := FilePath;
OleCheck(ShellLink.GetWorkingDirectory(WorkDir,MAX_PATH));
FSourceFileName := WorkDir;
OleCheck(ShellLink.GetHotKey(pwHotkey));
FHotKey := pwHotKey;
OleCheck(ShellLink.GetShowCmd(pShowCmd));
case pShowCmd of
1: FShowCommand := scNormalWindow;
7: FShowCommand := scMinimize;
3: FShowCommand := scMaxmize;
else
FShowCommand := scUnknown;
end;
except on EOleSysError do
raise Exception.Create('OLEソスGソスソスソス[ソスソスソスソスソスソスソスソスソスワゑソスソスソス');
end;
end;
ShellExecuteソスナの終ソスソスソスメゑソスソスヘ出ソスソスソスワゑソスソスソスB
ShellExecuteExソスソスWaitForSingleObjectソスソスgソスソスソスワゑソスソス蛯、ソスB
ソスネ会ソスソスヘボソス^ソスソスソスiButton1ソスjソスソスNソスソスソスbソスNソスソスソスソスニソスソスソスソスソスソスソスソスNソスソスソスソスソスソスAソスソスソス[ソスUソス[ソスソスソスソスソスフソスソスソスソスソスソスソスIソスソスソスソスソスソスワで待機ソスソスソスソスソスナゑソスソスB
ソスQソスlソスノなゑソスナゑソスソス蛯、ソスソスソスH
procedure TForm1.Button1Click( Sender: TObject);
var
SXInfo: TShellExecuteInfo;
begin
with SXInfo do//TShellExecuteInfoソス¥ソスソスソスフの擾ソスソスソスソスソス
begin
cbSize := SizeOf( SXInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;//ソスソスソス黷ェソスネゑソスソスニ終ソスソスソスメゑソスソスoソスソスソスネゑソス
Wnd := Application.Handle;
lpVerb := 'open';
lpFile := PChar( 'notepad.exe');
lpParameters := Nil;
lpDirectory := Nil;
nShow := SW_SHOW;
end;
ShellExecuteEx( @SXInfo);
Button1.Enabled := False;//ソスソスソスソスソスソスソスソスソスソスソスソスソスツゑソスNソスソスソスソスソスソスソスニまゑソスソスソスソスフゑソス...
//ソスNソスソスソスソスソスソスソスAソスvソスソスソスPソス[ソスVソスソスソスソスソスフ終ソスソスソスメゑソス
while WaitForSingleObject( SXInfo.hProcess, 0) = WAIT_TIMEOUT do
Application.ProcessMessages;
ShowMessage( 'ソスIソスソスソスソスソスソスソスI');
Button1.Enabled := True;
end;
ソスソスソスソスhttp://www.asahi-net.or.jp/‾GV4J-SGUR/narik/stp001.htm#SHGetSpecialFolderLocationソスナゑソスソスB