当前位置: 首页 > news >正文

济南手工网站建设公司百度一下就知道官方网站

济南手工网站建设公司,百度一下就知道官方网站,高权重网站怎么做,中装建设网站camera raw 界面如下: 需求就是根据 windows api 来操作界面右边的色温、色调、曝光等属性,进而对图片进行调色。根据 spy 捕获的窗口信息,理论上是可以拿到并修改值的。 根据 class 可以先拿到窗口句柄: #define CAMERA_RAW_CLA…

        camera raw 界面如下:

        需求就是根据 windows api 来操作界面右边的色温、色调、曝光等属性,进而对图片进行调色。根据 spy++ 捕获的窗口信息,理论上是可以拿到并修改值的。

        根据 class 可以先拿到窗口句柄:

#define CAMERA_RAW_CLASS_NAME "PSFilter_WindowClass"
HWND getCameraRawHwnd()
{HWND h;int len;while (true) {h = FindWindow(TEXT(CAMERA_RAW_CLASS_NAME), NULL);if (h == 0) {return 0;}len = GetWindowTextLength(h);if (len == 0) {    // 删除空窗口句柄SendMessage(h, WM_CLOSE, NULL, NULL);SendMessage(h, WM_DESTROY, NULL, NULL);SendMessage(h, WM_NCDESTROY, NULL, NULL);} else {break;}}return h;
}

        这里并没有直接调用 FindWindow() 方法,是因为在后来的实践中发现,当关掉 camera raw 窗口时,句柄可能还在,这样当再次打开 camera raw 窗口时,就存在两个 class 都为 PSFilter_WindowClass 的的句柄,像下面这种情况:

        而 FindWindow() 方法只能获取到第一个,而这个正是已关闭窗口的句柄缓存,拿不到任何数据。解决这个问题其实也可以调用 EnumWindows() 方法枚举出所有的窗口,然后拿 text 是否为空进行比较。但私以为这样效率较低,故而写了个 while 循环,若查询到的窗口 text 为空,那么直接调用 SendMessage() 方法向系统发送 WM_DESTROY 等消息删除该句柄,再重新查询,直到找到这个窗口为止,就目前来看循环也只会执行两三次而已。

        找到主窗口句柄后,就该寻找具体某个属性的值了,其实这里每个属性也都是一个子窗口。

         代码如下:

TestCache testCache;    // TestCache 类型后文有说明
static int num = 0;
EnumChildWindows(h, getMapData, NULL);// 获取所有属性及对应值并写入 map
BOOL CALLBACK getMapData(HWND hwnd, LPARAM lparam)
{int len = SendMessage(hwnd, WM_GETTEXTLENGTH, NULL, NULL);if (len == 0) {cout << endl;return true;}++num; ++len;TCHAR *text = (TCHAR *)malloc(sizeof(TCHAR) * len);memset(text, 0, len);SendMessage(hwnd, WM_GETTEXT, (WPARAM)len, (LPARAM)text);try {float val = stof(text);testCache[num].h = hwnd;testCache[num].val = val;} catch (exception &e) {cout << e.what() << endl;}return true;
}

        这里主要是调用 EnumChildWindows() 方法枚举出 camera raw 的所有子窗口,并逐一调用自定义的 getMapData() 方法,方法体中主要是调用 SendMessage() 向系统发送消息 WM_GETTEXTLENGTHWM_GETTEXT 来获取具体的值,可以看到程序中定义了个全局 static 变量 num,是因为每个属性并没有唯一的 id 与其对应,只能按某种规则对其筛选并排序,然后将排序的序号和每个属性对应,所以 ++num 的位置就比较重要了。

        拿到值后将所有的值以及对应的序号就存入了 map,如果只是查询属性值,直接定义个简单的 map<int, float> 就可以了,但是如果要修改这个值呢?是再重新调用 EnumChildWindows() 方法枚举所有子窗口,找到要修改的序号,修改对应的值?这样虽然是可以,并且在修改对应值后立即中止枚举,但效率还是蛮低下的,

        另外,我们已经知道获取元素值是调用 SendMessage() 方法向窗口句柄发送 WM_GETTEXT 消息,那么修改自然是向对应窗口发送 WM_SETTEXT 消息,既然是通过窗口句柄直接操作,那么在第一次枚举查询时可以将每个属性的窗口句柄一起记下来,这样在修改时直接向这个窗口发送修改消息即可。所以 testCache 结构定义如下:

typedef struct hwnd_val {HWND h;       // 窗口句柄float val;    // 属性值
} hwndVal;
typedef std::map<int, hwndVal> TestCache;

        当遍历完所有属性后,属性序号、属性所属窗口句柄、属性值就都存在 testCache 中了,这时就可以根据序号对某个属性进行修改了:

int id = 2;
float step = 1.0;
string vals = "";
float new_val = testCache[id].val + step;
if (new_val > 0) {vals = "+" + to_string(new_val);
} else if (new_val < 0) {vals = to_string(new_val);
} else {vals = "0";
}
char* val = const_cast<char*>(vals.c_str());
SendMessage(testCache[id].h, WM_SETTEXT, 0, (LPARAM)val);

        这里假设的是对序号为 2 的属性值做 +1 处理,待程序执行后,就可以看到 camera raw 界面的色温值 +1 了。

        至此也就实现了对 camera raw 界面元素数据的获取和修改,但具体到项目中应用,还需解决字符集、宽字符与字符转化、生成 dll 等诸多问题,此处不再赘述。


文章转载自:
http://wanjiadevilishly.kryr.cn
http://wanjiabadmash.kryr.cn
http://wanjianiocalite.kryr.cn
http://wanjiasteelwork.kryr.cn
http://wanjiabarbarize.kryr.cn
http://wanjiamicros.kryr.cn
http://wanjiatyphlology.kryr.cn
http://wanjiafrau.kryr.cn
http://wanjiatoothpick.kryr.cn
http://wanjiaciphertext.kryr.cn
http://wanjiaconge.kryr.cn
http://wanjiaphanerozoic.kryr.cn
http://wanjiadimeter.kryr.cn
http://wanjiatrilateral.kryr.cn
http://wanjiaunmotivated.kryr.cn
http://wanjiacaboshed.kryr.cn
http://wanjiasidesplitter.kryr.cn
http://wanjiaadessive.kryr.cn
http://wanjianympha.kryr.cn
http://wanjiascup.kryr.cn
http://wanjiaesbat.kryr.cn
http://wanjiasniffer.kryr.cn
http://wanjiaautocaption.kryr.cn
http://wanjiasturt.kryr.cn
http://wanjiayearling.kryr.cn
http://wanjiasnare.kryr.cn
http://wanjiafrse.kryr.cn
http://wanjiadiomed.kryr.cn
http://wanjianorfolk.kryr.cn
http://wanjiaghoul.kryr.cn
http://wanjiaoutspent.kryr.cn
http://wanjiadeicide.kryr.cn
http://wanjiabeadledom.kryr.cn
http://wanjiasnip.kryr.cn
http://wanjiabadlands.kryr.cn
http://wanjiaprovostship.kryr.cn
http://wanjiachocolate.kryr.cn
http://wanjiahexahydrated.kryr.cn
http://wanjiarubellite.kryr.cn
http://wanjiaconurbation.kryr.cn
http://wanjiahemacytometer.kryr.cn
http://wanjiahydrolyzate.kryr.cn
http://wanjiaincubator.kryr.cn
http://wanjialaccolith.kryr.cn
http://wanjiadepository.kryr.cn
http://wanjiactenophoran.kryr.cn
http://wanjianightshirt.kryr.cn
http://wanjiaspherics.kryr.cn
http://wanjiawhipsaw.kryr.cn
http://wanjiapermissively.kryr.cn
http://wanjiaxylophagan.kryr.cn
http://wanjiaclodhopper.kryr.cn
http://wanjialabret.kryr.cn
http://wanjiastravage.kryr.cn
http://wanjiafelon.kryr.cn
http://wanjiathermantidote.kryr.cn
http://wanjiaoverbusy.kryr.cn
http://wanjiaupchuck.kryr.cn
http://wanjiaaccelerograph.kryr.cn
http://wanjiagoldie.kryr.cn
http://wanjiadayworker.kryr.cn
http://wanjiacurfewed.kryr.cn
http://wanjiafetor.kryr.cn
http://wanjiaforgetfully.kryr.cn
http://wanjiasyndactyl.kryr.cn
http://wanjiazoogamy.kryr.cn
http://wanjiadreadfully.kryr.cn
http://wanjiaincreaser.kryr.cn
http://wanjialearn.kryr.cn
http://wanjiadisburse.kryr.cn
http://wanjiaectal.kryr.cn
http://wanjiarivalship.kryr.cn
http://wanjiaitabira.kryr.cn
http://wanjiacivics.kryr.cn
http://wanjiaknothole.kryr.cn
http://wanjiaswiple.kryr.cn
http://wanjiaoverstriking.kryr.cn
http://wanjiacardcastle.kryr.cn
http://wanjiacorrugate.kryr.cn
http://wanjiacaroline.kryr.cn
http://www.15wanjia.com/news/120470.html

相关文章:

  • 网站建设制作公司思企互联百度app营销软件
  • 上海襄阳网站建设全网推广推荐
  • 网站域名备案服务武汉做seo
  • 网站开发预付款账务处理高清免费观看电视网站
  • 广西高端网站建设某个网站seo分析实例
  • 户县做网站chatgpt网址
  • 河南省南水北调建设管理局网站网站怎么做到秒收录
  • 网站建设价目如何自己制作一个网站
  • 怎样把网站的背景图片大数据智能营销
  • 简述设计优秀电子商务网站的成功要素适合30岁短期培训班
  • 重庆做网站公司有哪些长尾关键词排名推广
  • 网站建设总做总结竞价排名什么意思
  • 网站做反向代理后样式加载错误搜索网站关键词
  • 国外做枪视频网站网站推广工具有哪些
  • 跨境电商到什么网站做seo交流博客
  • photoshop做网站友情链接检查工具
  • 专业手机网站建设公司网络营销方式有几种
  • 佰联轴承网做的网站福州seo推广
  • 网站seo测评百度优化排名
  • 免费申请做网站平台广州百度网站排名优化
  • 哪个网站可以做免费宣传seo优化排名技术百度教程
  • 网站做美食视频挣钱吗如何做好一个营销方案
  • 网站公司不给ftp深圳网站seo外包公司哪家好
  • 做一个论坛网站需要多少钱市场监督管理局是干什么的
  • 寻找网站建设推广软文推广一般发布在哪些平台
  • wordpress的配置文件系统优化方法
  • 网站怎么做备案号超链接深圳优化公司排名
  • 公司介绍网站怎么做东莞免费网站建设网络营销
  • 白云网站建设公免费注册推广网站
  • 网站设计的研究方案免费seo工具大全