打开手机系统界面总结(转)
来源:互联网 发布:花千骨器灵进阶数据 编辑:程序博客网 时间:2024/05/21 15:03
打开设置页:
中文系统中:
HWND hwndSetting = FindWindow(_T("Worker"), _T("设置"));
SetForegroundWindow(hwndSetting);
英文系统中:
HWND hwndSetting = FindWindow(_T("Worker"), _T("Settings"));
SetForegroundWindow(hwndSetting);
说明:这种有个bug就是需要预先打开设置这个设置页面,而且打开后右上角的ok没掉了,点击界面后才会出现。 希望大家帮忙想一下办法。
以下方法测试没问题:
ctlpnl.exe
CreateProcess(_T("//Windows//ctlpnl.exe"), _T("cplmain.cpl, $Id/")……
如CreateProcess(L"//Windows//ctlpnl.exe", L"cplmain.cpl, 1", ...
$Id取值:
0对比度
1密码
2主人信息
3电源
4内存
5关于
6背光
7调整屏幕
8输入
9声音和提醒
10删除程序
11菜单
12按键
13今日
14
15无线数据交换
16时钟
17配置网络适配器
18区域设置
19连接
20拨号盘
21
22证书管理
23蓝牙
24错误报告
25GPS 设置
26无线管理器
27加密
28由 USB 连接到 PC
29客户反馈
Control panel applets can be started programmatically. The format of the command is:
'/windows/ctlpnl.exe cpl_filename.cpl,applet_name,applet_index,tab_index'
打开程序页:
中文系统中:
HWND hWnd = FindWindow(L"Explore",L"程序");
SetForegroundWindow(hWnd);
英文系统中:
HWND hWnd = FindWindow(L"Explore",L"Programs");
SetForegroundWindow(hWnd);
同样也是需要预先打开程序这个进程
因为系统开启时默认是不会调用设置和程序这两个的。 各位大侠有什么好方法吗?之前好象有人问过
中文系统中:
HWND hwndSetting = FindWindow(_T("Worker"), _T("设置"));
SetForegroundWindow(hwndSetting);
英文系统中:
HWND hwndSetting = FindWindow(_T("Worker"), _T("Settings"));
SetForegroundWindow(hwndSetting);
说明:这种有个bug就是需要预先打开设置这个设置页面,而且打开后右上角的ok没掉了,点击界面后才会出现。 希望大家帮忙想一下办法。
以下方法测试没问题:
ctlpnl.exe
CreateProcess(_T("//Windows//ctlpnl.exe"), _T("cplmain.cpl, $Id/")……
如CreateProcess(L"//Windows//ctlpnl.exe", L"cplmain.cpl, 1", ...
$Id取值:
0对比度
1密码
2主人信息
3电源
4内存
5关于
6背光
7调整屏幕
8输入
9声音和提醒
10删除程序
11菜单
12按键
13今日
14
15无线数据交换
16时钟
17配置网络适配器
18区域设置
19连接
20拨号盘
21
22证书管理
23蓝牙
24错误报告
25GPS 设置
26无线管理器
27加密
28由 USB 连接到 PC
29客户反馈
Control panel applets can be started programmatically. The format of the command is:
'/windows/ctlpnl.exe cpl_filename.cpl,applet_name,applet_index,tab_index'
打开程序页:
中文系统中:
HWND hWnd = FindWindow(L"Explore",L"程序");
SetForegroundWindow(hWnd);
英文系统中:
HWND hWnd = FindWindow(L"Explore",L"Programs");
SetForegroundWindow(hWnd);
同样也是需要预先打开程序这个进程
因为系统开启时默认是不会调用设置和程序这两个的。 各位大侠有什么好方法吗?之前好象有人问过
- ppc_2008
- (ppc_2008)
- 等 级:
UP
- czbever
- (骑着蜗牛看世界)
- 等 级:
补充一下 如果要打开设置里的某项比如说对比关于里的 tabcontrol , 可以多加一个 值
参考http://www.pocketpcdn.com/articles/controlpanel.html
如:
但是打开 设置这个不知道如何解决那个 bug
参考http://www.pocketpcdn.com/articles/controlpanel.html
如:
- C/C++ code
TCHAR szParam[100];
wsprintf(szParam,L"cplmain.cpl,%d,%d",5,2);
PROCESS_INFORMATION pi;
if (!::CreateProcess(_T("//Windows//ctlpnl.exe"),
szParam, NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
//Cannot start Control Panel process
}
但是打开 设置这个不知道如何解决那个 bug
- czbever
- (骑着蜗牛看世界)
- 等 级:
- C/C++ code
HWND SettingWnd = ::FindWindow(L"Dialog",L"");
if(!::IsWindow(SettingWnd))
{
HWND StartMenuhWnd;
HWND HHTASK = ::FindWindow(L"HHTaskBar",NULL);
::PostMessage(HHTASK,WM_KEYDOWN,VK_LWIN,0xC0600001);
::PostMessage(HHTASK,WM_KEYUP,VK_LWIN,0xC0600001);
while(1)
{
StartMenuhWnd = ::FindWindow(L"MNU",L"");
if(::IsWindow(StartMenuhWnd))
{
break;
}
}
::ShowWindow(StartMenuhWnd,SW_HIDE);
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x0d,0);
}
else
{
::SetForegroundWindow(SettingWnd);
}
这种方法是可以打开设置页,但是感觉效率很低
- czbever
- (骑着蜗牛看世界)
- 等 级:
设置窗口只要被打开过,就不再关闭了,只是隐藏了。以后只要FindWindow就可以找的到,主要是第一次如何打开它,我就模拟了一次进入它的情况,先找到上方的HHTaskBar,然后发送键盘消息给它,让它选中Setting的窗口。 设置窗口的class 名称为 “Dialog”, 所以第二次执行就直接
SetForegroundWindow
SetForegroundWindow
- okadler0518
- (与群人共进!成长...)
- 等 级:
顶你个肺啊
- czbever
- (骑着蜗牛看世界)
- 等 级:
通过remote spy 我看到这个窗口的坐标位置:
所以我断定是MNU这个窗口,接着我们向这个窗口发虚拟键
我们看一下这个窗口的特点:
Settings的位置是处于第二个,所以我们需要发两次WM_KEYDOWN和WM_KEYUP来模拟用户输入,移动到 Settings这个位置上,然后再调用VK_RETURN。
::ShowWindow(StartMenuhWnd,SW_HIDE); //将MNU这个窗口隐藏
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x0d,0);//VK_RETURN
所以我断定是MNU这个窗口,接着我们向这个窗口发虚拟键
我们看一下这个窗口的特点:
Settings的位置是处于第二个,所以我们需要发两次WM_KEYDOWN和WM_KEYUP来模拟用户输入,移动到 Settings这个位置上,然后再调用VK_RETURN。
::ShowWindow(StartMenuhWnd,SW_HIDE); //将MNU这个窗口隐藏
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x0d,0);//VK_RETURN
- okadler0518
- (与群人共进!成长...)
- 等 级:
再次顶你个肺啊
- czbever
- (骑着蜗牛看世界)
- 等 级:
上面的再多个移动虚拟键,就可以打开程序页面了
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x0d,0);//VK_RETURN
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYUP,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x26,0);//VK_UP
::PostMessage(StartMenuhWnd,WM_KEYDOWN,0x0d,0);//VK_RETURN
- okadler0518
- (与群人共进!成长...)
- 等 级:
这小子不错,有前途。帮顶。。希望顶到胃出血。
- czbever
- (骑着蜗牛看世界)
- 等 级:
解决 虽然不是什么好办法 期待更好的办法
- nihao38
- (有问必答,有分必给)
- 等 级:
关注
- czbever
- (骑着蜗牛看世界)
- 等 级:
顺便把所以打开页面的都总结一下:
打开电话的页面:
打开短信收件箱页面:
这里我用的是createProcess,更安全的还是建议用ShellExecuteEx,如果超出32个进程,shell会自动释放无用的进程
打开电话的页面:
- C/C++ code
PROCESS_INFORMATION pi;
if (!::CreateProcess(_T("//Windows//cprog.exe"),
NULL, NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
}
打开短信收件箱页面:
- C/C++ code
PROCESS_INFORMATION pi;
if (!::CreateProcess(_T("//Windows//tmail.exe"),
L"-service /"SMS/"", NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
}
这里我用的是createProcess,更安全的还是建议用ShellExecuteEx,如果超出32个进程,shell会自动释放无用的进程
- czbever
- (骑着蜗牛看世界)
- 等 级:
进入图片与视频:
//英文环境:
CProcessExecute::StartExeCute(L"//Windows//Start Menu//Programs//Pictures & Videos.lnk");
//中文环境:
CProcessExecute::StartExeCute(L"//Windows//“开始”菜单//程序//图片和视频.lnk");
其中
void CProcessExecute::StartExeCute(LPCTSTR lpFileName)
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lpFileName;
ShExecInfo.lpParameters = L"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
}
//英文环境:
CProcessExecute::StartExeCute(L"//Windows//Start Menu//Programs//Pictures & Videos.lnk");
//中文环境:
CProcessExecute::StartExeCute(L"//Windows//“开始”菜单//程序//图片和视频.lnk");
其中
void CProcessExecute::StartExeCute(LPCTSTR lpFileName)
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lpFileName;
ShExecInfo.lpParameters = L"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
}
- okadler0518
- (与群人共进!成长...)
- 等 级:
- C/C++ code
其中
void CProcessExecute::StartExeCute(LPCTSTR lpFileName)
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = lpFileName;
ShExecInfo.lpParameters = L"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
}
这个应该是照相摄像功能的调用!
- czbever
- (骑着蜗牛看世界)
- 等 级:
哈哈 不是的 你小子真是太菜了
- gahyyai
- (冰岛男孩)
- 等 级:
mark
- dkling866
- (dkling866)
- 等 级:
学习!~
- r11222
- (r11222)
- 等 级:
UYYYYYYYYYYYYYYYYYY
- pysjp
- (咖啡恋人)
- 等 级:
mark
- infsafe
- (Def Of ArT)
- 等 级:
必须顶一下.
- sachengtime
- (sachengtime)
- 等 级:
这个必须的
- iabswfg858
- 等 级:
很好哦,这个都没做过呢。学习
- hezulin
- (hezulin)
- 等 级:
顶一下.好
- czbever
- (骑着蜗牛看世界)
- 等 级:
一些调用程序的方法可以用调用lnk或者exe的方法,可以通过remote spy 和 remote process来查看
然后直接ShellExecuteEx
其他方面的再继续研究 我再帖出来。
然后直接ShellExecuteEx
其他方面的再继续研究 我再帖出来。
- okadler0518
- (与群人共进!成长...)
- 等 级:
看错了,这个是ShellExecuteEx。。。。哎。。
- czbever
- (骑着蜗牛看世界)
- 等 级:
这个是系统快捷方式存放的地方 我们可以通过类似StartExeCute(L"//Windows//“开始”菜单//联系人.lnk"); 这样子 就可以进联系人的界面
- czbever
- (骑着蜗牛看世界)
- 等 级:
找到一种更好的办法,反汇编fbrowser.dll,然后取得里面的函数,然后这样子就可以进任意的路径了,
之前不是有人问如何进入游戏这个页面吗,可以用这种方法:
之前不是有人问如何进入游戏这个页面吗,可以用这种方法:
- C/C++ code
typedef BOOL (WINAPI * FPSTARTBROWSER)( LPCWSTR lpszPath, INT i );
FPSTARTBROWSER StartBrowser;
HMODULE hInst;
hInst = LoadLibraryW( L"fbrowser.dll" );
StartBrowser = (FPSTARTBROWSER)GetProcAddressW( hInst, (LPCWSTR)10 );
if( StartBrowser )
{
if( StartBrowser( L"//Windows//“开始”菜单//程序//游戏", 0 ) ) //此路径可以是任意路径,但设置这个例外
{
MSG msg;
while ( GetMessage(&msg, NULL, 0, 0) ) //对该目录的消息循环进行处理,如果预先已经打开了shell32.exe,则消息循环在shell32.exe中,此时不需要处理消息循环,GetMessage直接返回NULL
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
FreeLibrary( hInst );
- czbever
- (骑着蜗牛看世界)
- 等 级:
消息循环在那边是为了响应非消息队列消息
- funwell
- (饭碗儿)
- 等 级:
mark
- javabizliuwei
- (javabizliuwei)
- 等 级:
yes
- UMU
- (小开)
- 等 级:
进入图片与视频:
ShellExecuteEx ":MSPIMG"
:MSPIMG == pimg.exe
ShellExecuteEx ":MSPIMG"
:MSPIMG == pimg.exe
- uteryu
- (uteryu)
- 等 级:
哇呜哇呜哇呜哇呜
- a404794938
- (a404794938)
- 等 级:
行不行的啊???
- wudao1992
- (wudao1992)
- 等 级:
zhi 到了
- lvsss575
- (lvsss575)
- 等 级:
该回复于2009-08-09 23:17:57被管理员删除
- taizans
- (书生)
- 等 级:
notice:)
- nbaabc373760794
- (nbaabc373760794)
- 等 级:
顶
- ProgrammerNO1
- (dapong)
- 等 级:
这个函数是不是放在这里调用
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
- ProgrammerNO1
- (dapong)
- 等 级:
打开快捷方式或定位目标文件时出错,为什么会这样?
- ITxixihaha
- (xixihaha)
- 等 级:
好东东!
帮了大忙
帮了大忙
- egceo
- (郑广智)
- 等 级:
mark
- ProgrammerNO1
- (dapong)
- 等 级:
怎么解决的,快捷方式成功创建了,可是链接不到exe ,咋回事?
- BEYONDMA
- (beyond)
- 等 级:
3
精华!
- czbever
- (骑着蜗牛看世界)
- 等 级:
收帖
- yangcongbo123456
- (yangcongbo123456)
- 等 级:
不知道好不好用哦!
- tvb5201314
- (tvb5201314)
- 等 级:
不错~~~学习了~
- daisuixin520
- (daisuixin520)
- 等 级:
学习了
- GuanMingSoft
- (GuanMingSoft)
- 等 级:
mark
- czbever
- (骑着蜗牛看世界)
- 等 级:
下面内容转自UMU先生http://hi.baidu.com/umu618/blog/item/796944c2d702243ce5dd3bc7.html
BOOL StartBrowser(LPCWSTR lpszFolderPath, INT nStyle);
参数说明
nStyle
0 Icon 模式,类似 Shell32.exe 的“程序”界面
1 Report 模式,类似 File Explorer 的界面
2 Report 模式,打开 /My Documents
3 和 0 一样,其它值自己试看看
例子
typedef BOOL (WINAPI * FPSTARTBROWSER)(LPCWSTR lpszFolderPath, INT nListViewStyle);
FPSTARTBROWSER StartBrowser;
HMODULE hModule;
hModule = LoadLibraryW(L"fbrowser.dll");
if (NULL != hModule)
{
StartBrowser = (FPSTARTBROWSER)GetProcAddressW(hModule, (LPCWSTR)10);
if (NULL != StartBrowser)
{
if (StartBrowser(L"//", 0))//0表示Icon模式
{
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
FreeLibrary(hModule);
}
BOOL StartBrowser(LPCWSTR lpszFolderPath, INT nStyle);
参数说明
nStyle
0 Icon 模式,类似 Shell32.exe 的“程序”界面
1 Report 模式,类似 File Explorer 的界面
2 Report 模式,打开 /My Documents
3 和 0 一样,其它值自己试看看
例子
typedef BOOL (WINAPI * FPSTARTBROWSER)(LPCWSTR lpszFolderPath, INT nListViewStyle);
FPSTARTBROWSER StartBrowser;
HMODULE hModule;
hModule = LoadLibraryW(L"fbrowser.dll");
if (NULL != hModule)
{
StartBrowser = (FPSTARTBROWSER)GetProcAddressW(hModule, (LPCWSTR)10);
if (NULL != StartBrowser)
{
if (StartBrowser(L"//", 0))//0表示Icon模式
{
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
FreeLibrary(hModule);
}
- 打开手机系统界面总结(转)
- 打开手机图库界面
- android打开系统网络设置界面(不同版本手机都可以打开)
- 打开系统设置界面
- Android打开系统设置界面
- Android打开系统设置界面
- android打开系统联系人界面
- Android打开系统设置界面
- Android打开系统设置界面
- Android打开系统设置界面
- Android打开系统设置界面
- Android 打开系统设置界面
- Android打开系统设置界面
- 打开系统应用管理界面
- Android打开系统设置界面
- Android打开系统设置界面
- Android打开系统设置界面
- 打开系统wifi设置界面
- 决定在这里留下点什么
- GCC动态链接库和静态库
- project euler
- Zw函数与Nt函数的分别与联系
- jdbc连接oracle两种方式
- 打开手机系统界面总结(转)
- 开心农场给我们的人生启示~~~太经典了!!!
- 在SQL Server 2005数据库中实现自动备份
- How to handle chevron button using CToolBarCtrl object?
- 对第六章实验任务(6)的修正
- 解决SQL Server触发器滥用问题
- 我的又一个窝
- Eclipse下CVS的配置
- struts的struts-config中validator代码,validator.xml