首页 > Windows开发 > 详细

panel内嵌程序窗体

时间:2014-05-07 09:29:17      阅读:500      评论:0      收藏:0      [点我收藏+]

 

bubuko.com,布布扣
function RunAppInPanel(const AppFileName: string; ParentHandle: HWND; var WinHandle: HWND): Boolean;
var
  si: STARTUPINFO;
  pi: TProcessInformation;
begin
  Result := False;

  // 启动进程
  FillChar(si, SizeOf(si), 0);
  si.cb := SizeOf(si);
  si.wShowWindow := SW_SHOW;
  if not CreateProcess(nil, PChar(AppFileName), nil, nil, true,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi) then Exit;

  // 等待进程启动
  WaitForInputIdle(pi.hProcess, 10000);

  // 取得进程的 Handle
  WinHandle := GetProcessWindow(pi.dwProcessID);
  if WinHandle > 0 then begin
    // 设定父窗体
    Windows.SetParent(WinHandle, ParentHandle);

    // 设定窗体位置
    SetWindowPos(WinHandle, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOZORDER);

    // 去掉标题栏
    SetWindowLong(WinHandle, GWL_STYLE, GetWindowLong(WinHandle, GWL_STYLE)
      and (not WS_CAPTION) and (not WS_BORDER) and (not WS_THICKFRAME));

    Result := True;
  end;

  // 释放 Handle
  CloseHandle(pi.hProcess);
  CloseHandle(pi.hThread);
end;

//var hWin: HWND = 0;
//FormClose
//  if hWin > 0 then PostMessage(hWin, WM_CLOSE, 0, 0);
//FormResize
//  if hWin <> 0 then MoveWindow(hWin, 0, 0, panel1.ClientWidth, panel1.ClientHeight, True);

//if not RunAppInPanel(App, panel1.Handle, hWin) then ShowMessage(App not found);
bubuko.com,布布扣

panel内嵌程序窗体,布布扣,bubuko.com

panel内嵌程序窗体

原文:http://www.cnblogs.com/MaxWoods/p/3710446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!