MFC 进程和新进程主窗口特性问题

原创 2013年12月02日 14:37:26
 PROCESS_INFORMATION 结构  在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息。其结构定义如下。
  typedef struct_PROCESS_INFORMATION{
  HANDLE hProcess;
  HANDLE hThread;
  DWORD dwProcessId;
  DWORD dwThreadId;
  }PROCESS_INFORMATION;
  其中成员含义如下。
  ① hProcess:返回新进程的句柄。
  ② hThread:返回主线程的句柄。
  ③ dwProcessId:返回一个全局进程标识符。该标识符用于标识一个进程。从进程被
  创建到终止,该值始终有效。
  ④ dwThreadId:返回一个全局线程标识符。该标识符用于标识一个线程。从线程被创
  建到终止,该值始终有效。

与此相关的数据结构还有:

STARTUPINFO结构

  该结构用于指定新进程的主窗口特性。STARTUPINFO 结构定义如下。
  typedef struct_STARTUPINFO
  {
  DWORD cb;
  LPTSTR lpReserved;
  LPTSTR lpDesktop;
  LPTSTR lpTitle;
  DWORD dwX;
  DWORD dwY;
  DWORD dwXSize;
  DWORD dwYSize;
  DWORD dwXCountChars;
  DWORD dwYCountChars;
  DWORD dwFillAttribute;
  DWORD dwFlags;
  WORD wShowWindow;
  WORD cbReserved2;
  LPBYTE lpReserverd2;
  HANDLE hStdInput;
  HANDLE hStdOutput;
  HANDLE hStdError;
  }STARTUPINFO,*LPSTARTUPINFO;
  其中成员含义如下。
  ① cb:指定该结构大小。
  ② lpReserved:保留,置为NULL。
  ③ lpDesktop:指定一个字符串,包括该进程的桌面名或窗口位置名。
  ④ lpTitle:指定控制台进程创建的新控制台窗口标题。
  ⑤ dwX,dwY:指定新窗口左上角的x 和y 偏移量(以像素为单位)。如果dwFlags 成员
  未指定STARTF_USEPOSITION 标志,则忽略这两项。
  ⑥ dwXSize,dwYSize:指定新窗口的宽度和高度。如果dwFlags 成员未指定
  STARTF_USESIZE 标志,则忽略这两个成员。
  ⑦ dwXCountChars,dwYCountChars:指定新控制台窗口的屏幕缓冲区的宽度和高度。
  如果dwFlags 成员未指定STARTF_USECOUNTCHARS 标志,则忽略这两成员。
  ⑧ dwFillAttribute:指定新控制台窗口的初始文字和背景颜色。如果dwFlags 成员未
  指定STARTF_USEFILLATTRIBUTE 标志,则忽略该成员。
  ⑨ dwFlags:创建窗口标志。
  ⑩ wShowWindow:新窗口的显示状态。如果dwFlags 成员未指定STARTF_
  USESHOWWINDOWW 标志,则忽略该成员。
  cbReserved2:保留,必须置为0。
  lpReserved2:保留,必须置为NULL。
  hStdInput:指定一个句柄,该句柄用作进程的标准输入句柄。如果dwFlags 成员未
  指定STARTF_USESTDHANDLES 标志,则忽略该成员。
  hStdOutput:指定一个句柄,该句柄用作进程的标准输出句柄。如果dwFlags 成员
  未指定STARTF_USESTDHANDLES,则忽略该成员。
  hStdError:指定一个句柄,该句柄用作进程的标准错误句柄。如果dwFlags 成员未
  指定STARTF_USESTDHANDLES,则忽略该成员。

SECURITY_ATTRIBUTES 结构

  该结构存放一个对象的安全描述符并指定是否继承返回的句柄。
  SECURITY_ATTRIBUTES 结构定义如下。
  typedef struct_SECURITY_ATTRIBUTES{
  DWORD nLength;
  LPVOID lpSecurityDescriptor;
  BOOL bInheritHandle;
  }SECURITY_ATTRIBUTES
  其中成员含义如下。
  ① nLength:指定该结构大小。
  ② lpSecurityDescriptor:指向一个对象的安全描述符,该安全描述符控制对象的共享。
  如果该成员置为NULL,则该对象使用调用进程的默认安全描述符
  ③ bInheritHandle:指定新进程被创建时是否继承返回的句柄。若该成员置为TRUE,
  则新进程继承该句柄。

mfc 根据窗口句柄(HWND)杀死进程

先枚举桌面所有的窗口的标题或者类名。根据类名或者标题得知该窗口的句柄(HWND)。然后再杀死进程。看代码: BOOL bTerminateProcess = FALSE; HWND hwndExcep...
  • sz76211822
  • sz76211822
  • 2016年10月27日 09:38
  • 706

mfc获取一个进程并前端显示

思路是通过进程名获取到进程Id,在根据id获取到句柄,在调用::SetWindowPos(hWnd,HWND_TOPMOST,10,10,10,10,SWP_NOMOVE|SWP_NOSIZE);即可...
  • xinpo66
  • xinpo66
  • 2015年06月19日 16:18
  • 1648

浅谈MFC多进程编程,ui卡死问题

由于工作需求,最近需要把公司游戏登陆器改成用多进程实现,把主窗口和游戏窗口各自独立一个进程,目的是为了以后实现多开后界面不至于太卡且一个窗口崩掉后不至于影响其他游戏窗口。         以前从来没写...
  • huasonl88
  • huasonl88
  • 2015年04月16日 11:34
  • 4507

VC由进程ID获取窗口句柄的各种方

//通过进程ID获取进程句柄  HANDLE GetProcessHandleByPid(DWORD dwPid) {   return OpenProcess(PROCESS_ALL_ACCE...
  • jiangqin115
  • jiangqin115
  • 2014年08月27日 15:02
  • 3110

[MFC] 基于多进程的窗口程序设计 & 窗口分离与合并(仿chrome的窗口分离效果)

什么是基于多进程的窗口程序设计? 基于这种设计的程序:表面上主窗口只有一个进程 实际上是多个进程 举个例子 当使用chrome浏览器打开多个tab页面时  如下图所示: 表面上看 是一个chro...
  • felicityWSH
  • felicityWSH
  • 2017年03月27日 15:14
  • 1335

VC实现A进程窗口嵌入到B进程窗口中显示的方法

这篇文章主要介绍了VC实现A进程窗口嵌入到B进程窗口中显示的方法,对于理解windows程序运行原理的进程问题有一定的帮助,需要的朋友可以参考下 本文通过一个Demo示例讲述把A应用程序...
  • jiangqin115
  • jiangqin115
  • 2015年05月03日 15:12
  • 1329

C#遍历进程获取主窗口句柄

C#遍历进程获取主窗口句柄
  • wyq1153
  • wyq1153
  • 2016年10月28日 20:49
  • 891

通过进程名或进程ID获取进程句柄,窗口句柄

1. 通过进程名获取进程ID BOOL CFileOperation::KillProcessFromName(CString strProcessName) { //创建进程快照(TH32CS...
  • Meta_Cpp
  • Meta_Cpp
  • 2014年06月26日 16:22
  • 3807

CreateProcess 隐藏窗口的坑!

最近自己要写一个程序能够创建进程隐藏
  • XiaoZuoay
  • XiaoZuoay
  • 2014年09月10日 19:00
  • 2311

进程的特性与状态

一、进程的特性 1.结构特征     通常的程序是不能并发执行的,为使程序能独立运行,应为之配置一进程控制块,即pcb。所谓 进程的实体:程序段、相关的数据段、pcb。;而撤销进程,实质上是撤销进程中...
  • shuiuii
  • shuiuii
  • 2017年04月22日 18:44
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 进程和新进程主窗口特性问题
举报原因:
原因补充:

(最多只允许输入30个字)