重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言获取窗口句柄函数 c语言获取窗口位置

c语言怎么控制输出窗口大小

在Windows操作系统下用C语言控制输出窗口大小首先需要调用GetStdHandle函数获得窗口句柄,然后再调用相关函数修改窗口大小,如下所示:

站在用户的角度思考问题,与客户深入沟通,找到自贡网站设计与自贡网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、成都外贸网站建设公司、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟空间、企业邮箱。业务覆盖自贡地区。

#include stdio.h

#include windows.h

#include conio.h

...

HANDLE hOut; /*标准输出句柄*/

COORD size = {44, 7}; /*窗口大小*/

SMALL_RECT rc = {0, 0, 44-1, 7-1}; //要设置的窗口显示的大小和位置

CONSOLE_CURSOR_INFO cursor = {1, FALSE}; /*光标信息,用于隐藏光标*/

hOut = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleWindowInfo(hOut, TRUE, rc);

SetConsoleScreenBufferSize(hOut, size);

SetConsoleCursorInfo(hOut, cursor);

CloseHandle(hOut);

...

函数GetStdHandle可以获取当前标准输入以及输出设备的句柄。函数原型为:

HANDLE GetStdHandle(DWORD nStdHandle);

/*

其中,nStdHandle可以是

STD_INPUT_HANDLE 标准输入设备句柄

STD_OUTPUT_HANDLE 标准输出设备句柄

STD_ERROR_HANDLE 标准错误设备句柄

*/

需要说明的是,“句柄”是Windows最常用的一个概念。它通常用来标识Windows资源(如菜单、 图标、窗口等)和设备等对象。虽然可以把句柄理解为是一个指针变量类型,但它不是对象所在的地址指针,而是作为Windows系统内部表的索引值来使用的。调用结束后,需要通过调用CloseHandle函数来关闭输入输出句柄。

C语言问题?

你这个程序是捕捉0到9的按键状态,按下再松开时才会记录,想要识别所有按键,把for循环范围扩大。

比如for(charch=32;ch=127;ch++)这样就包含了特殊符号及大小写字母还有数字。

但是,这个代码是有问题的!

一、你这个代码需在键位已经按下后启动才能识别,否则启动时没有按下对应键位,程序就结束了。要嵌套死循环,让其一直检测。

二、直接扩大ASCII区间,像上面的那样32~127,识别字母区间会被防毒软件直接判断为病毒!!。

三、GetAsyncKeyState不是C语言库函数,是window的函数,换其它操作系统就失效。

GetAsyncKeyState返回值最高位为1则说明对应ch的键被按下,所以这里用0x8000来判断最高位。

四、想要捕获其它软件界面内容还有很多方法,比如:

1、通过windowAPI函数FindWindow来获取窗口句柄。

2、遍历窗口下控件句柄,找到输入框句柄。

3、通过窗口句柄找到进程id(GetWindowThreadProcessId函数),再通过id获取进程句柄(OpenProcess函数)。

4、向目标进程申请内存(VirtualAllocEx),再通过PostMessage函数异步发送消息获取目标控件内的内容(具体消息要结合控件类型,另外注意PostMessage是异步执行)。

具体自行查阅资料,一言两语说不清,上面步骤需先搞懂window消息机制。

注意:以上方法依然只限window系统,且有数据保护的控件无法获取。

五、或简单暴力的方法,直接写个定时截图,只要硬盘够不停桌面截图。

但不论写什么程序,和装摄像头一样,终究都会被发现。!!!!!!!!!!!!!

C语言中如何获得当前进程句柄,谢谢!

DWORD PID;

PID = GetProcessPID(L"test.exe");

//获取进程pid函数

DWORD GetProcessPID(LPCTSTR pName)

{

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (INVALID_HANDLE_VALUE == hSnapshot) {

return NULL;

}

PROCESSENTRY32 pe = { sizeof(pe) };

BOOL fOk;

for (fOk = Process32First(hSnapshot, pe); fOk; fOk = Process32Next(hSnapshot, pe)){

if (!_tcsicmp(pe.szExeFile, pName)) {

CloseHandle(hSnapshot);

return pe.th32ProcessID;

}

}

return NULL;

}

//由进程pid获取进程句柄,置顶

HWND hh = GetProcessTopWindows(PID);

HWND GetProcessTopWindows(DWORD dwPID){

count = 0;

EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);

if(count 0) {

//cout "窗口句柄是:" nhWnd[count -1] endl;//输出句柄,可用spy++工具核对

return (nhWnd[count -1]);

}

return NULL;

}

别忘了添加对应头文件。

c语言中的俄罗斯方块游戏里的一段,HWND wnd = GetHWnd();是什么意思?

c语言中的俄罗斯方块游戏里的一段,HWND wnd = GetHWnd();获取窗口的句柄


分享题目:c语言获取窗口句柄函数 c语言获取窗口位置
网站链接:http://cqcxhl.cn/article/dohgsjd.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP