C_and_CPP 板


LINE

↖水☆晶▲显㊣灵↗ 速抄下球里发出的那个光。 传原原Po在批踢踢之C_and_CPP版发问此问题:「 为什麽用findwindow找combobox的handler都找不到,可是button却可以?? 」 并於遭到质疑後附上了程式码片段:「 IntPtr mWin = FindWindow("ThunderRT6FormDC", "POSDLLDemo"); IntPtr mFrame = FindWindowEx(mWin, IntPtr.Zero, "ThunderRT6Frame", "Port Config"); currChild = FindWindowEx(mFrame, prevChild, "ThunderRT6ComboBox", "COM1"); 」 神旨传令快,如有抄错请见谅。 让我们重现一下历史,请看: 首先他说是用C++写的,好,再来他用到了今天令众生起蒸液的IntPtr, 也就是说这是一个用到.net Framework,或者说得更精确,是C++/CLI的程式。 如何在Visual Studio上建立一个C++/CLI的专案呢? 首先开启Visual Studio,按下「New Project」,语言选择「Visual C++」, 接着从「CLR」建立一个「CLR Console Application」。 http://i.imgur.com/6oPxs8E.png 出来了!杰尼……不对,出来了!程式码。 http://i.imgur.com/ZREqNEz.png 我们发现原PO使用的攻击技能是Windows API, Windows的API都是以C-style导出函数, 并出没在Windows上各种系统DLL, 比如今天的「FindWindow」以及「FindWindowEx」都是在「user32.dll」中, 怎麽知道神奇宝贝的详细资料?看图监就对了! Windows开发人员必备的图监就是「MSDN」,让我们来看看: FindowWindow在 https://msdn.microsoft.com/zh-tw/library/windows/desktop/ms633499(v=vs.85).aspx 缩:http://bit.ly/FindWindow FindWindowEx在 https://msdn.microsoft.com/zh-tw/library/windows/desktop/ms633500(v=vs.85).aspx 缩:http://bit.ly/FindWindowEx 我们将网页往下滑找到「Requirements」的表格, 就可以看到这里有说明此API位在哪个DLL,要引用哪个header,支援的系统版本等。 好,查完了图监,就可以开始收服了! 首先在.net中想要呼叫外部DLL的函数,必须用到一项技术叫「Platform invoke」, 有时也会看到「P/Invoke」这样的写法, 虽然C++/CLR可以直接#include <Windows.h>来呼叫Windows API, 但是这样就无法在不用转型的状况下重现IntPtr了。 要呼叫Unmanaged DLL提供的函数,必需定义他的名称、参数,以及DLL, 但首先必须 using namespace System::Runtime::InteropServices; [DllImport ("user32")] IntPtr FindWindow(String ^, String ^); [DllImport ("user32")] IntPtr FindWindowEx(IntPtr, IntPtr, String ^, String ^); 我已省略参数名称,如不确定还是可以上MSDN查询。 接着就可以把程式贴上去看看会发生什麽事了。 https://i.imgur.com/k3P3670.png 看到了吗?可是,瑞凡,你…… 什麽!?「IntPtr.Zero」,这不是C#吗? 好的,辛苦了这麽久,原来是C#啊,我还以为是C++……除非是用打的笔误。 完。 後记: 如果是C++的话,应该打「IntPtr::Zero」才对。 附上完整程式码:https://i.imgur.com/IHnATV4.png --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.8.94.89
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1468873954.A.47B.html
1F:→ TobyH4cker: 後记应该写对不起版工大大我错惹↘ 07/19 04:33
2F:推 wtchen: 我就是想避免这种"搞了半天原来是C#"的事件发生 07/19 04:39
3F:→ wtchen: 浪费板友时间才新增限制,毕竟发问者自己也有责任 07/19 04:40
4F:→ wtchen: 去协助协助者厘清问题 07/19 04:40
5F:→ TobyH4cker: 之前有篇文也是C#发到这,是不是也是他呀?删了找不到 07/19 04:40
6F:→ wtchen: 是阿,所以我当时有点火 07/19 04:43
7F:→ TobyH4cker: 如果我还记得是他的话就...不会弄错了 07/19 04:46
8F:推 wtchen: 总之辛苦了,还多花时间帮忙看 07/19 04:51
9F:推 Sidney0503: 推一下XDDDDDD 07/19 07:24
10F:推 Sidney0503: 今天在cpp版看到cs的程式码怎麽办? 07/19 08:00
11F:→ Sidney0503: 文章关起来 假的!! 07/19 08:00
12F:→ Sidney0503: 我眼睛业障重阿 07/19 08:01
13F:→ Sidney0503: 开启二进位档 反组译成组合语言 看记忆体内容 07/19 08:04
14F:→ Sidney0503: 那才是真的 07/19 08:04
15F:→ TobyH4cker: 然後再转成C pseudo code 因为是假的 07/19 11:56
16F:推 damody: 超有趣 感谢分析 07/19 21:05
17F:推 james732: 推业障重的分析 07/19 23:09
18F:推 s25g5d4: 看到这 ID 想到我都用大大的教学把枫谷安装档 torrent 07/20 00:03
19F:→ s25g5d4: 拉出来 (worship) 07/20 00:03
20F:→ s25g5d4: 可是有没有不用开程式就能捞 torrent 的方法 QAQ 07/20 00:03
21F:→ TobyH4cker: 那可能需要逆向分析它的代理下载器了,可是这样就会 07/20 05:06
22F:→ TobyH4cker: 违反条约,另一个方法是写一个程式直接读记忆体来替代 07/20 05:07
23F:→ TobyH4cker: 手动操作,但一样还是得开下载器,总之都是热血啊啊 07/20 05:07
24F:推 s25g5d4: 这个时间回文是还没睡还是刚起床 OuO 07/20 05:15
25F:→ TobyH4cker: 晚安 07/20 05:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP