C++根據程序獲取主視窗的控制代碼
原帖網址:http://www.cnblogs.com/ylhome/archive/0001/01/01/1529681.html
// processenum.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
#include <Psapi.h>
#include <string.h>
#pragma comment ( lib, "Psapi.lib" )
HWND lmshwnd;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,DWORD lParam)
{
DWORD mpid;
GetWindowThreadProcessId(hwnd,&mpid);
if (mpid==lParam)
{
int i=GetWindowTextLength(hwnd);
char szhello[255];
char lmschar[255]=_T("名稱");
GetWindowText(hwnd,szhello,i+1);
if (strstr(szhello,lmschar))
{
printf("%s\n",szhello);
lmshwnd=hwnd;
}
}
return TRUE;
}
void PrintProcessNameAndID( DWORD processID )
{
TCHAR szProcessName[MAX_PATH] = TEXT("unknow");
//根據程序ID,開啟程序返回程序的控制代碼
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,processID );
//得到程序名
if (NULL!=hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
//EnumProcessModules根據控制代碼獲取例項,儲存到hMod中
if (EnumProcessModules( hProcess,&hMod,sizeof(hMod),&cbNeeded) )
{
//獲取根據程序控制代碼獲取程序名稱 szProcessName
GetModuleBaseName( hProcess, hMod, szProcessName,sizeof(szProcessName)/sizeof(TCHAR) );
}
}
//列印程序名和程序ID,其程序控制代碼為hProcess
TCHAR *lmsname=TEXT("LMSVirtualLab.EXE");
if (!strcmp(szProcessName,lmsname))
{
_tprintf( TEXT("%s (PID: %x)\n"),szProcessName,processID);
EnumWindows((WNDENUMPROC)EnumWindowsProc,processID);
//HDESK hDesk=OpenDesktop(_T(""),0,FALSE,DESKTOP_ENUMERATE);
//EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowsProc,processID);
}
CloseHandle( hProcess );
}
int _tmain(int argc, _TCHAR* argv[])
{
// 得到程序ID的列表
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
//列舉所有程序的ID,返回到aProcesses陣列中
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return 0;
//計算一共返回了多少個程序ID
cProcesses = cbNeeded / sizeof(DWORD);
//列印每個程序的名稱和對應的ID
for ( i = 0; i < cProcesses; i++ )
{
if( aProcesses[i] != 0 )
{
PrintProcessNameAndID(aProcesses[i]);
}
}
printf("%x\n",lmshwnd);
ShowWindow(lmshwnd,SW_MAXIMIZE);
return 0;
}
相關推薦
C++根據程序獲取主視窗的控制代碼
原帖網址:http://www.cnblogs.com/ylhome/archive/0001/01/01/1529681.html // processenum.cpp : Defines the entry point for the console applica
根據程序id獲取主視窗控制代碼
struct ProcessWindowData { HWND hWnd; unsigned long lProcessId; }; BOOL CALLBACK EnumWindowCallback(HWND hWnd, LPARAM lParam) { ProcessWindowData&
C# 根據程序獲取程式主視窗控制代碼(包括最小化和隱藏程式)
namespace Applications.UI { class CurrentProcess { private static Hashtable processWnd = null; public del
MFC 獲取當前視窗控制代碼,或者父子視窗控制代碼
父子視窗 在子視窗中,需要用到父視窗的控制代碼: AfxGetMainWnd()->m_hWnd 注:在父視窗中,也可以這麼用來呼叫自己視窗的控制代碼 在子視窗中,需要用到自己視窗的控制代碼 ChildDlg *pChildDlg ; pChildDlg->m_h
獲取ArcMap視窗控制代碼,通過WinAPI獲取工作空間中點選要素的系統桌面座標
這裡用了個“桌面座標”,是希望區分一下ArcGis的“螢幕座標”(與之對應的還有一個“地理座標”)。 什麼是“螢幕座標”呢?使用ITool介面的OnMouseDown方法獲取的“x,y”值即是,其原點值在“工作空間”窗體左上角。 什麼是我所稱謂的“工作空間”呢?它是資料編輯區域,用Spy++檢視一下其窗體
C#獲得windows工作列視窗控制代碼及一些操作(放大、縮小、關閉、隱藏……)
需呼叫API函式 需在開頭引入名稱空間using System.Runtime.InteropServices; 1、通過視窗名字查詢 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern In
如何獲取控制檯視窗控制代碼 (HWND)
HWND GetConsoleHwnd(void) { #define MY_BUFSIZE 1024 // Buffer size for console window titles. HWND hwndFound; // This is what
從父視窗中獲取子視窗控制代碼以及其例項控制代碼
獲取父視窗控制代碼 HWND hWnddlg = AfxGetMainWnd()->m_hWnd; //主視窗控制代碼 或者 HWND hWnddlg = this->m_hWnd; //主視窗控制代碼 獲取子視窗控制代碼 如果子視窗是控制元件,並有控制元件
獲取桌面視窗控制代碼
GetDesktopWindow獲取的是頂層顯示桌面控制代碼,也就是說,如果應用程式視窗在桌面上,那麼它的視窗也算是所獲取的視窗的一部分,如果使用GetDC(NULL)作圖,則永遠是在最頂層。 那麼如何獲取包含桌面圖示的視窗控制代碼呢? 我們可以用Spy++來檢視。 可以
spy++只能讀取主視窗控制代碼而無法讀取到子控制元件控制代碼的原因
看完DIRECTUI簡介就明白了: DirectUI意為直接在父視窗上繪圖(Paint on parent dc directly)。即子視窗不以視窗控制代碼的形式建立(windowless),只是邏
根據程序ID 獲取視窗控制代碼
using namespace System;using namespace System::Diagnostics;using namespace System::ComponentModel; Process *m_pCurProcess = Process::GetProcessById(
在DLL中獲取主程序視窗控制代碼
有的時候難免需要在DLL中獲取主程序的視窗控制代碼,比如在DLL注入的時候等等。那麼如何在DLL中獲取主程序的視窗控制代碼呢?可以通過EnumWindows來實現。先通過GetCurrentProcessId獲取程序的PID,然後在EnumWindows中呼叫GetWind
根據視窗控制代碼來獲取程序ID
[DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID
C#獲取當前活動視窗控制代碼
c# 獲取當前活動視窗控制代碼,獲取視窗大小及位置 2018年04月26日 13:48:21 漂泊_人生 閱讀數:1889 需呼
C# 影象處理: 獲取當前活動視窗控制代碼,獲取視窗大小及位置
C# 影象處理: 獲取當前活動視窗控制代碼,獲取視窗大小及位置 需呼叫API函式 需在開頭引入名稱空間 using System.Runtime.InteropServices; 獲取當前視窗控制代碼:GetForegroundWindow() [DllImport("us
AutoIt3 使用程序名獲取視窗控制代碼
背景 需要用AutoIt3控制QQ音樂播放器,首先要獲取QQ音樂的視窗控制代碼 問題 WinGetHandle方法不能滿足要求 QQ音樂的Title會根據當前播放的歌曲動態改變
mfc 根據視窗控制代碼(HWND)殺死程序
先列舉桌面所有的視窗的標題或者類名。根據類名或者標題得知該視窗的控制代碼(HWND)。然後再殺死程序。看程式碼: BOOL bTerminateProcess = FALSE; HWND hwndE
C#獲取視窗控制代碼概念和方法例項
在Windows中,控制代碼是一個系統內部資料結構的引用。例如當你操作一個視窗,或說是一個Delphi窗體時,系統會給你一個該視窗的控制代碼,系統會通知你:你正在操作142號視窗,就此你的應用程式就能要求系統對142號視窗進行操作——移動視窗、改變視窗大小、把視窗極小化為圖
WPF 視窗控制代碼獲取和設定
WPF 視窗控制代碼設定和獲取 1、控制代碼類 WHwnd.cs public class WHwnd { /// <summary> /// 主窗體控制代碼 /// </summar
按鍵精靈 -獲取視窗控制代碼
MessageBox "視窗右下角座標:" get_window_pos //得到當前最前面的視窗控制代碼-就是把需要的視窗啟用在最前面 Hwnd = Plugin.Window.Foreground() //得到滑鼠指向的視窗控制代碼Hwnd = Plugin.Window.Mo