1.å¦ä½ç¨Windows APIç¼åä¸ä¸ªç®åç¨åº
2.利用Windows API编制一个完整程序,函数函数实现GDI函数绘图功能。源码
3.PostMessageWindowsAPI
4.WindowsAPI函数清单API函数清单:
5.如何在VC中使用GetModuleFileNameEx获取运行中EXE或DLL的大全完整路径?
å¦ä½ç¨Windows APIç¼åä¸ä¸ªç®åç¨åº
Windows APIæ¯Windowsåºç¨ç¨åºç¼ç¨çæ ¸å¿ï¼ä»å¤©å°±åè¯å¤§å®¶å¦ä½ä½¿ç¨Windows APIç¼åä¸ä¸ªHello Worldç±»åçç¨åºå§ã 1.é¦å æå¼ææ¬ç¼è¾å¨ï¼è¾å ¥ä¸é¢ç代ç ï¼ #include int main() { MessageBox(NULL,"Hello","World",MB_OK); return 0; } 2.ä¸é¢ä»£ç ä¸çMessageBoxå½æ°æ¯å¼¹åºä¸ä¸ªå¯¹è¯æ¡ãæ¥ä¸æ¥è¿è¡ç¼è¯ï¼å¨è¿é使ç¨å½ä»¤è¡ç¼è¯ï¼é¦å æå¼å½ä»¤è¡æ件ï¼åç¼æ¯cmdæè batã 3.å¨å½ä»¤è¡éé¢è¾å ¥å½ä»¤ãcl æºä»£ç æ件åããæenteré®æ§è¡ã 4.æ£ç¡®ç¼è¯é¾æ¥ä¹åï¼çæexeå¯æ§è¡æä»¶ï¼ æ³¨æäºé¡¹ è¿éçå½ä»¤è¡çªå£æ¯æå¼çæ¹å¤çæ件ï¼é¦å è¦è®¾ç½®å¥½ç¯å¢åéã æ¤ç§æ¹æ³è½å¤æ´ç´è§çæåç¨åºç¼è¯é¾æ¥çè¿ç¨ã
利用Windows API编制一个完整程序,实现GDI函数绘图功能。函数函数okr 源码
// MyWindowTest.cpp : Defines the entry point for the application.
//
//说明:此程序是源码运用VC6.0创建win API项目
#include "stdafx.h"
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
{
//完成绘图操作
//创建画笔
HPEN hPen = CreatePen(PS_SOLID,1,RGB(,0,0));
//选入设备上下文,返回当前的画笔
HPEN hOldPen=(HPEN)SelectObject(hdc,hPen);
//画矩形
Rectangle(hdc,,,,);
SelectObject(hdc,hOldPen);
//添加文字
COLORREF oldColor = SetTextColor(hdc,RGB(0,0,));
RECT rt;
rt.left = ;
rt.top = ;
rt.right = ;
rt.bottom = ;
DrawText(hdc,"我的窗口绘图程序",strlen("我的窗口绘图程序"),&rt,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_WORD_ELLIPSIS);
SetTextColor(hdc,oldColor);
//画刷
HBRUSH hBr = CreateSolidBrush(RGB(,0,));
HBRUSH hOldBrs = (HBRUSH)SelectObject(hdc,hBr);
Ellipse(hdc,,,,);
SelectObject(hdc,hOldBrs);
}
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
//注册窗口类
WNDCLASS wcs;
wcs.style= CS_HREDRAW | CS_VREDRAW;
wcs.lpfnWndProc = MyWndProc;
wcs.cbClsExtra = 0;
wcs.cbWndExtra = 0;
wcs.hInstance = hInstance;
wcs.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wcs.hCursor = LoadCursor(NULL, IDC_ARROW);
wcs.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcs.lpszMenuName = NULL;
wcs.lpszClassName = "MyWindow";
if(0 == RegisterClass(&wcs))
{
MessageBox(NULL,"注册窗口类失败","错误提示",MB_OKCANCEL);
return -1;
}
//创建窗口
HWND hWnd = CreateWindow(wcs.lpszClassName, "我的绘图窗口", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
//显示窗口
ShowWindow(hWnd, nCmdShow);
//更新窗口
UpdateWindow(hWnd);
//消息循环
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
PostMessageWindowsAPI
PostMessage是Windows API中的关键函数,它用于非阻塞地将消息放入消息队列中,大全确保消息能够传递到与指定窗口关联的函数函数线程,即使该线程并未立即处理。源码其原型为`BOOL PostMessage(HWND hWnd,大全 UINT Msg, WPARAM wParam, LPARAM lParam)`,函数参数包括接收消息的函数函数窗口句柄(hWnd)、消息类型(Msg)、源码bs副图指标源码附加的大全消息信息(wParam和lParam)。
hWnd参数可以设定为HWND_BROADCAST,函数函数使消息发送给所有顶层窗口,源码包括不可见的大全窗口,或者设置为NULL,小程序源码代理记账此时与dwThread标识符相同的线程将接收消息。这个函数支持异步操作,调用后立即返回,无需等待线程处理。
VB中,docker镜像不包含源码我们可以利用PostMessage实现游戏挂机,例如,通过`FindWindow`获取游戏窗口句柄,然后发送WM_LBUTTONDOWN和WM_LBUTTONUP消息,模拟鼠标点击。主力资金占比源码例如:
Private Declare Function PostMessage Lib "user" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
...
Dim hWndX As Long
lpClassName = "游戏窗口的类名"
lpWindowName = "游戏窗口的标题"
hWndX = FindWindow(lpClassName, lpWindowName) ' 获取游戏窗口句柄
Dim wMsg As Long, wParam As Long, lParam As Long
xx = ' 点击坐标
yy =
wMsg = WM_LBUTTONDOWN ' 左键按下
wParam = 1
lParam = yy * + xx
PostMessage hWndX, wMsg, wParam, lParam ' 发送左键按下消息
Sleep ' 暂停一段时间
wMsg = WM_LBUTTONUP ' 左键抬起
wParam = 1
lParam = yy * + xx
PostMessage hWndX, wMsg, wParam, lParam ' 发送左键抬起消息
通过这种方式,即使游戏窗口最小化,也能通过PostMessage实现鼠标在特定位置的点击操作。
WindowsAPI函数清单API函数清单:
网络操作:WNetAddConnection
创建永久连接
WNetAddConnection2
连接网络资源
WNetAddConnection3
连接网络资源
WNetCancelConnection
终止连接
WNetCancelConnection2
终止连接
WNetCloseEnum
结束枚举
WNetConnectionDialog
使用对话框连接
WNetDisconnectDialog
使用对话框断开连接
WNetEnumResource
枚举网络资源
消息传递:BroadcastSystemMessage
广播系统消息
文件操作:CloseHandle
关闭内核对象
... (文件操作函数,如lclose, lcreat, llseek, LockFile等)
其他:GetShortPathName
获取短路径名
GetLogicalDrives
检查逻辑驱动器
GetLogicalDriveStrings
获取驱动器路径字符串
GetOverlappedResult
检查重叠操作状态
GetPrivateProfileInt, GetPrivateProfileString, GetProfileInt, GetProfileSection
读取ini文件
GetTempFileName, GetTempPath
获取临时文件路径
GetVolumeInformation
获取磁盘卷信息
GetSystemDirectory, GetWindowsDirectory
获取系统和Windows目录
SetFileAttributes, SetFilePointer, SetFileTime
设置文件属性、位置和时间
SetHandleCount
设置句柄计数
SetVolumeLabel
设置卷标
SystemTimeToFileTime
时间转换
UnlockFile, UnlockFileEx
解锁文件
UnmapViewOfFile
解映射文件
VerFindFile, VerInstallFile
文件安装和卸载
VerLanguageName
获取语言名称
VerQueryValue
读取版本资源
WriteFile, WriteFileEx
写入文件
AbortDoc, AbortPrinter, AddJob, AddMonitor, AddPort, AddPrinter
打印相关操作
... (其他打印和设备管理函数)
这些函数涵盖了Windows API中涉及网络连接、消息传递、文件操作以及部分打印和设备管理的关键操作。
如何在VC中使用GetModuleFileNameEx获取运行中EXE或DLL的完整路径?
在Windows编程中,有时候我们需要获取当前运行的程序或动态链接库的完整路径。为此,可以使用Windows API函数GetModuleFileName。以下是一个简单的实例源代码: cpp#include <windows.h>
#include <stdio.h>
// 定义一个函数来获取模块文件名
BOOL CreateSampleService()
{
TCHAR szPath[MAX_PATH]; // 用于存储路径的字符数组
if ( !GetModuleFileName( NULL, szPath, MAX_PATH ) ) // NULL参数表示当前进程
{
printf("GetModuleFileName failed (%d)\n", GetLastError()); // 获取并打印错误代码
return FALSE;
}
return TRUE;
}
如果你想获取特定进程或实例中的模块文件路径,可以使用GetModuleFileNameEx函数,它需要进程句柄hProcess和模块实例hInst作为参数。确保为结果提供足够大的缓冲区,比如MAX_PATH,以存储可能的完整路径。 例如,调用时的样子如下:GetModuleFileNameEx(hProcess, hInst, lpFile, MAX_PATH);