资源管理器的路径寻找
- xp
#include <windows.h> #include <stdio.h> int main() { TCHAR str[100] = TEXT("Hello World"); HWND hwnd = NULL; hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL); hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL); hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL); hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBoxEx32"), NULL); hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBox"), NULL); hwnd = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL); SendMessage(hwnd, WM_GETTEXT, 100, (LPARAM)str); //SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)str); //GetWindowText(hwnd, str, 100); //MessageBox(NULL, str, TEXT("Cap"), 0); wprintf(TEXT("%s\n"), str); return 0; }
关于GetWindowText为什么不可以用:
https://my.oschina.net/WinkJie/blog/3053583
Copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.
2.windows 7
#include <windows.h>
#include <stdio.h>
int main()
{
TCHAR str[100] = TEXT("Hello World");
HWND hwnd = NULL;
hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("Address Band Root"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("msctls_progress32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBoxEx32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBox"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL);
SendMessage(hwnd, WM_GETTEXT, 100, (LPARAM)str);
//SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)str);
MessageBox(NULL, str, TEXT("Cap"), 0);
//wprintf(TEXT("%s\n"), str);
return 0;
}
上面这个还是比较鸡肋的:
需要点击下地址栏才会出现ComboBoxEx32->ComboBox->Edit
测试:
通过点击向下箭头,刷新路径显示
#include <windows.h>
#include <stdio.h>
#include <locale.h>
int main()
{
TCHAR str[1024] = TEXT("Hello World");
HWND hwnd = NULL;
HWND hToolbat;
hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("Address Band Root"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("msctls_progress32"), NULL);
hToolbat = FindWindowEx(hwnd, NULL, TEXT("ToolbarWindow32"), NULL);
SendMessage(hToolbat, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
SendMessage(hToolbat, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));
SendMessage(hToolbat, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
SendMessage(hToolbat, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));
hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBoxEx32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBox"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL);
if(hwnd == NULL)
{
wprintf(L"%s\n", L"error");
return -1;
}
SendMessage(hwnd, WM_GETTEXT, 1024, (LPARAM)str);
MessageBox(NULL, str, TEXT("Caption"), 0);
return 0;
}
利用好wmic命令
E:\MyDocument\Desktop>wmic process /?
PROCESS - Process management.
HINT: BNF for Alias usage.
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb c
lause>].
USAGE:
PROCESS ASSOC [<format specifier>]
PROCESS CALL <method name> [<actual param list>]
PROCESS CREATE <assign list>
PROCESS DELETE
PROCESS GET [<property list>] [<get switches>]
PROCESS LIST [<list format>] [<list switches>]
wmic process where caption="notepad.exe" get commandline /value
wmic process where name="notepad.exe" get executablepath
Copyright @WinkJie
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix