谁能给个方法遍历photoshop cs2以上版本的菜单项 对于photoshop cs版本我用getmenustring和MF_BYPOSITION,能遍历得到所有菜单项。但在CS2版本上无法成功。不知道为什么,哪位能帮忙给个方法或思路? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 photoshop cs2开始能自定义菜单,现在我想遍历当前所有菜单项,如果实现? void PrintMenu(FILE *fp, HMENU hMenu, int lvl){ int n = GetMenuItemCount(hMenu); MENUITEMINFOA info; info.cbSize = sizeof(info); info.fMask = MIIM_FTYPE|MIIM_STRING|MIIM_SUBMENU; for (int i=0; i<n; i++) { char buf[64] = " "; info.dwTypeData = buf+lvl; info.cch = 64 - lvl; GetMenuItemInfoA(hMenu, i, TRUE, &info); if (info.fType == MFT_STRING) { fprintf(fp, "%s\n", buf); } else if (info.fType == MFT_SEPARATOR) { fprintf(fp, "%s-----------\n", buf); } if (info.hSubMenu) PrintMenu(fp, info.hSubMenu, lvl+2); }}int _tmain(int argc, _TCHAR* argv[]){ HWND hWnd = FindWindow(_T("Photoshop"), NULL); HMENU hMenu = GetMenu(hWnd); FILE *fp = fopen("menu.txt", "w"); PrintMenu(fp, hMenu, 0); fclose(fp); return 0;}爬了一下 好像可以. CS2 我说了,cs能这样得到,cs 2后是采用owendraw方式的,无法得到。owenerdraw方式自绘菜单,现在利用wm_drawitem消息得到菜单项的指针了,DRAWITEMSTRUCT * lp2 能得到菜单项的id了WORD id = LOWORD(lp2->itemID);菜单绘上去的文本怎么得到呢? hotpos:你的程序我在cs中能获取,在cs2中只能得到第一层的菜单。即文件、编辑等。下层菜单内容都无法获取,你真的在cs2中测试得到? 你可以通过PHOTOSHOP的COM对象来获取.........,这个接口应该是公开的。 哪个ps com接口中的哪个属性或方法? ListCtrl控件刷新问题 散分了!简单的对话框显示图形问题,各位帮忙呀! 关于CTreeView的问题 如何改变CFormView的背景颜色 界面的问题,大家请进 我想在树型控件中添加列表的功能,我该怎么做? 对话框的构造函数 各位高手:请问有没有区分固定硬盘和移动硬盘的函数给100分 某个程序需要键盘和鼠标输入,我想编个程序,不操作键盘和鼠标,在我的程序中实现向那个程序输入键盘和鼠标,请问如何实现? DAO打开数据库的一个问题,各位老兄给个面子吧 【Windows界面】利用系统的Aero特效来美化自己的程序 虚函数的疑问
void PrintMenu(FILE *fp, HMENU hMenu, int lvl)
{
int n = GetMenuItemCount(hMenu); MENUITEMINFOA info;
info.cbSize = sizeof(info);
info.fMask = MIIM_FTYPE|MIIM_STRING|MIIM_SUBMENU; for (int i=0; i<n; i++)
{
char buf[64] = " ";
info.dwTypeData = buf+lvl;
info.cch = 64 - lvl;
GetMenuItemInfoA(hMenu, i, TRUE, &info); if (info.fType == MFT_STRING)
{
fprintf(fp, "%s\n", buf);
}
else if (info.fType == MFT_SEPARATOR)
{
fprintf(fp, "%s-----------\n", buf);
} if (info.hSubMenu)
PrintMenu(fp, info.hSubMenu, lvl+2);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HWND hWnd = FindWindow(_T("Photoshop"), NULL);
HMENU hMenu = GetMenu(hWnd); FILE *fp = fopen("menu.txt", "w");
PrintMenu(fp, hMenu, 0);
fclose(fp); return 0;
}
爬了一下 好像可以. CS2
owenerdraw方式自绘菜单,现在利用wm_drawitem消息得到菜单项的指针了,
DRAWITEMSTRUCT * lp2
能得到菜单项的id了
WORD id = LOWORD(lp2->itemID);
菜单绘上去的文本怎么得到呢?