procedure TForm1.BitBtn4Click(Sender: TObject);
var
FWord, FDoc: OleVariant;
FHandle: THandle;
abcd: HWND;
begin
try
FWord := GetActiveOleObject('Word.Application');
except
FWord := CreateOleObject('Word.Application');
end;
FDoc := FWord.Documents.Add;
FDoc.SaveAs('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\Text.doc');
FWord.Visible := True;
Application.MainForm.Hide;
FHandle := FindWindow(nil, PChar('Text.doc - Microsoft Word'));
//想在这里使外部程序“WORD”退出后再接着执行
while WaitForSingleObject(FHandle, 5) = WAIT_TIMEOUT do
Application.ProcessMessages;
Application.MainForm.Show;
end;
var
FWord, FDoc: OleVariant;
FHandle: THandle;
abcd: HWND;
begin
try
FWord := GetActiveOleObject('Word.Application');
except
FWord := CreateOleObject('Word.Application');
end;
FDoc := FWord.Documents.Add;
FDoc.SaveAs('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\Text.doc');
FWord.Visible := True;
Application.MainForm.Hide;
FHandle := FindWindow(nil, PChar('Text.doc - Microsoft Word'));
//想在这里使外部程序“WORD”退出后再接着执行
while WaitForSingleObject(FHandle, 5) = WAIT_TIMEOUT do
Application.ProcessMessages;
Application.MainForm.Show;
end;
procedure ShellExecute_AndWait(FileName: string);
var
exInfo: TShellExecuteInfo;
Ph : DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize:= SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb :='open';
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
begin
Ph := exInfo.HProcess;
end
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;
begin
ShellExecute_AndWait('Project2.exe');
end;
我上面的程序是什么地方出问题了?我是要对Word操作
这句得到的句柄不对,请问如何得到FWord的句柄?
这句得到的句柄不对,请问如何得到FWord的句柄?