我想模拟鼠标滚轮,下面的代码能向上滚动,怎么样下向滚动啊 mouse_event( MOUSEEVENTF_WHEEL,0,0,WHEEL_DELTA,0); 我把参数设置为 mouse_event( MOUSEEVENTF_WHEEL,0,0,-WHEEL_DELTA,0); 编译通不过啊 ---------------------------------------------- - |
|
作者: |
|
2014-8-23 17:09:14 | ||||
1楼: | http://baike.baidu.com/view/1080208.htm?fr=aladdin 自己注意看 dwData ---------------------------------------------- - |
作者: |
|
2014-8-23 17:37:56 | ||||
2楼: | 鎴戞槸鐢ㄧ殑delphi锛岄偅涓弬鏁颁笉鑳戒负璐熷晩锛岃礋鐨勪笉鑳界紪缁? ---------------------------------------------- - |
作者: |
|
2014-8-23 17:38:34 | ||||
3楼: | 鎴戞槸鐢ㄧ殑delphi锛岄偅涓弬鏁颁笉鑳戒负璐熷晩锛岃礋鐨勪笉鑳界紪缁? ---------------------------------------------- - |
作者: |
|
2014-8-23 19:42:23 | ||||
4楼: | 泰达星语,看懂啊,楼上 ---------------------------------------------- 还可以更好 |
作者: |
|
2014-8-23 21:34:42 | ||||
5楼: | 我用的是DELPHI XE6,mouse_event( MOUSEEVENTF_WHEEL,0,0,WHEEL_DELTA,0);这个代码只能往上移,百度说,往上为正,往下为负,但设置-WHEEL_DELTA 或 -10等 数值,都不能编译。 谁能教教我啊 ---------------------------------------------- - |
作者: |
|
2014-8-25 10:14:26 | ||||
6楼: | 没有人知道吗 ---------------------------------------------- - |
作者: |
|
2014-8-26 10:24:39 | ||||
7楼: | var i:integer; begin i:=-120; mouse_event( MOUSEEVENTF_WHEEL,0,0,i,0) end; 这样是可以编译通过的 , 但是是否可以运行 ,请自行测试 ---------------------------------------------- - |
作者: |
|
2014-8-26 10:28:26 | ||||
8楼: | 如果不是看到楼上,我居然没看出楼主的语法错误。 也没看到,楼主不是代码没效果。 而是,编译不通过。 幸亏,从来没发言,不然就糗大了。 ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-26 10:38:39 | ||||
9楼: | 依赖Delphi自身不是太好的习惯,Delphi也是在翻写Windows的API,还是向微软靠拢,深入研究的好。 WHEEL_DELTA 可以看一下Delphi内的定义,直接写死了 120 ,正数,表示正向 滚轮一圈。而微软的API呢 ,可以查MSDN的英文版,和百度百科上的中文解释是一样的,明确说明,负数表示反向。 我今天看了楼主的回复,实验了一下,的确编译不过,但是自己用变量呢,因为变量要在运行的时候赋值,编译的时候是无法检测的,肯定就可以编译了。但是楼主没给出具体的代码,是否可以运行,是否有效果,需要实际测试! ---------------------------------------------- - |
作者: |
|
2014-8-26 10:45:55 | ||||
10楼: | 楼主和楼上的请写 0 - WHEEL_DELTA 你们不懂啥叫语法吗? 特别是楼上,你不懂语法还敢搞开发? 还说什么向微软靠拢? 不过深入研究是对的(给楼上面子,居然不领情!)。 但是,你先把基础搞好,在深入也不迟! 好吧,刚才我也是纸上谈兵。下面的代码才是符合函数调用规则的。 mouse_event( MOUSEEVENTF_WHEEL,0,0,DWORD(0 - WHEEL_DELTA),0); ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-26 11:08:22 | ||||
11楼: | To : Flying Wang Delphi编译器的代码你看过? 我是没看过的,至于说语法跟编译器自身有没有直接关联,语法的规则是编译器定的,编译器编译不过,你说语法没问题,它就是不给你编译,你能怎么办? 至于说基础,我感觉你还没资格来说这话,你什么时间把Win3.1的内核分析读透彻,什么是把Win2000的代码多读几遍再给我说基础吧。 0 - WHEEL_DELTA = -120 编译器能检测到是负值,不编译的,你如果不能看明白我说的含义,请闭上你高贵的嘴 另外,向微软靠拢没有错,除非你不开发windows平台的软件。 ---------------------------------------------- - |
作者: |
|
2014-8-26 11:19:44 | ||||
12楼: | 我们的语法是看人家 DELPHI 教程来的。 人家 DELPHI 编译器肯定支持 教程中的语法。 不支持的,我们也学不到。 你那是高端内容,我们先学的是基础,基础有 计算机原理 离散数学 数据结构 数据库 操作系统 软件工程 某种编程语言 然后是 DELPHI 入门 然后是 DELPHI 开发。 这些都会了,才能表示你懂基础。 有一点点的不会,那就是基础不行。 你 WIN3.1 的内核 懂得再多。也都属于高端内容。和基础无关。 另外,我们应该向 LINUX 靠拢了,这是未来趋势。 刚才我是纸上谈兵,没去具体试试。 现在告诉你正确答案。 这是语法的基础问题,mouse_event 是一个函数,调用函数,需要提供正确的数据类型,发现错误,就应该知道如何去修改,而不是找外部责任。其实还是自己基础差,连一个语法错误都不知道如何修改! mouse_event( MOUSEEVENTF_WHEEL,0,0,DWORD(0 - WHEEL_DELTA),0); ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-26 11:26:49 | ||||
13楼: | 问题是人家楼主说了,是编译器编译不过,那么你能去改编译器?我只不过告诉楼主如何去做,实际上能编译,是一个解决方法。 你讲语法,讲到天亮,编译器不给你编译,有什么用? 去研究一下编译器,再来给我说教吧,推荐你去研究一下Dev C++ 至于懂基础,还不是你有资格说的,我是从DOS下用Turbo Pascal写到现在的,你说的课程哪个大学的计算机课程没教,难道就你读过书是怎么滴。 向Linux靠拢? 别告诉我你现在用的是Linux ---------------------------------------------- - |
作者: |
|
2014-8-26 11:31:24 | ||||
14楼: | 楼上的看不懂我的意思,是我的错,我的语文是体育老师教的。 我哪里说过要改 编译器的? 我们有那个水平,还在这里混? 地球人对付 编译不过的标准做法不是修改自己的代码吗? 修改自己的代码,直到编译通过为止啊。 不懂语法,能知道如何修改吗? 还有,除了要修改语法错误,还要记得,别搞出逻辑错误。 你语法都不懂,还能写出代码来? 你语法错误,不去改你自己的错误,你居然能理解成,修改编译器? 懒得理你这种思维奇怪的家伙。 ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-26 11:47:54 | ||||
15楼: | Flying Wang:你是不是从精神病院出来的? 我写的代码你编译一下试试,哪个地方错误??神经病 ---------------------------------------------- - |
作者: |
|
2014-8-26 11:49:19 | ||||
16楼: | 楼上的,老子可没说你代码有错误。 告诉你一个其他代码,不表示你的代码就有错误。 ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-26 11:54:40 | ||||
17楼: | 。 ---------------------------------------------- - |
作者: |
|
2014-8-26 15:32:48 | ||||
18楼: | 干嘛这么激烈呢,把问题说清楚不就得了。我的基础也不好,不过我知道百度和看源代码定义,所以我把我找到的情况写一下: 其实要看楼主为什么编译没有通过,原因是Delphi对mouse_event的定义(在Windows单元中),参数中第四个的类型是DWORD,DWORD=LongWord,那么它的范围是什么?32位,无正负符号标志,也就是0~4 294 967 295,好吧,这样子,楼主用负数来写,编译器肯定会出错(提示你范围边界出错 violates subrange bounds)。 pcspace所说用负数,来源于(http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx):If dwFlags contains MOUSEEVENTF_WHEEL, then dwData specifies the amount of wheel movement. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120.,但我比较好奇的是DWORD难道在其它地方是可以负数的吗?所以我有必要怀疑微软的档案定义有问题,可能这里不是DWORD,而可能是一个有符号的类型(比如int32),pcspace用 i:integer;来写,实际做了一个隐形转换 DWORD(I),结果是什么?我测试了一下,是4294967176,经测试只要你这样子写 mouse_event( MOUSEEVENTF_WHEEL,0,0,4294967176,0);它就是下向滚动的,那什么下向滚的范围是多少呢?4294967176 downto 2147443648 (数字越小,跨度越大),这也映证了我的猜测,为什么?因为int32的范围 -2147443648 到 2147443647,假设它把DWORD的最高位当成符号位,它DWORD的(2147443648 - 4294967176) 就相当于是int32的负数范围。 ---------------------------------------------- - |
作者: |
|
2014-8-26 15:43:15 | ||||
19楼: | 楼上分析的很对。 ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-27 8:59:16 | ||||
20楼: | 一个无符号类型数值的负数表示法而已....其实Flying Wang说的对, 楼主你基础不行, 参数类型规定是无符号的, 不代表就不能传递负数, 内核 2000源码什么的扯的太远了 楼主连最基本的数据在内存中表示方式和存储方式都还不清楚呢... 最简单的例子: x: Byte; {UINT8} y: ShortInt; {INT8} y := -100; Move(y, x, sizeof(y)); 吧X打印出来看看值是多少, 其实有没有符号什么的都是浮云, 关键是数据位, 只要长度一致, 值是多少只取决于你怎么去理解 ---------------------------------------------- http://www.cnblogs.com/hs-kill/ |
作者: |
|
2014-8-27 9:59:15 | ||||
21楼: | 我谈一下我的观点。Delphi的编译器是将程序编译好,程序本质上是调用的Windows的API,这是我所说的为什么要紧跟微软的原因,只要程序编译了,API运行起来就可以。 crystalmoon 说的在理,不管是我的方法还是 Flying Wang的做法,都是用了变量,我怀疑编译器在编译的时候,是不会去检测变量方式的。 hs_kill 说的2000的代码是有意义的,因为最终编译的结果是要基于操作系统的。脱离操作系统去谈编译没意义。 最后解释一下整个争论,我看到楼主的提问,就给楼主找了一下资料,因为一直是搜MSDN的,所以对微软的东西很少去怀疑(不是说微软的东西没BUG,而是因为官方的东西正确的可能性非常非常的大) 第二次呢,上来看了一下,楼主回复说,无法编译,我就随手写了代码测试了一下,可行,然后就放上来,这也是给楼主的一个例子罢了。 写这个代码,因为我猜测编译器在编译常量可以检测,编译变量无法检测,没去多想别的。 Flying Wang 的回复后,我接着回复的本意是从编译器的角度试图分析这个问题,而没有过多的去纠结语法什么的,也根本没考虑这个问题,包括很多Delphier平时习惯拿来就用,不去考虑深层次的问题,这些不管大家是否承认,但是的确存在。 但是Flying Wang的回复,没基础等等,这个话呢,说实在我感觉Wang真没资格说,看资料Wang似乎是80年的吧,我是78的,96年开始写程序,最初是用的C,后来上大学学Turo C,接触到Turbo Pascal,再后来Delphi也用,虽然因为工作原因很少用Delphi,但是我个人认为编程语言呢,是编译器最终定义出来的,语法这些东西不要过于去纠缠它,我的理解是不同的语言,基础语法大同小异,曾经有一段时间因为不同的编程语言交叉着用,结果经常会,在A语言内用B的语法,最后我才坚决的用最简易的教学式的语法,这样各种语言内基本都能通用。 最后还是声明一下,我的回复过多的是基于原理去考虑,给出的代码也是给楼主的问题一个变通的答案,跟Flying Wang的争论是因为Wang似乎有点过于高人的表现,我不怎么认可此种态度。至于以后的争论,本人概不参与。以后论坛的问题呢,也概不回答了,避免出现类似的纠结性的争论出现。 ---------------------------------------------- - |
作者: |
|
2014-8-27 10:17:30 | ||||
22楼: | 我说你没基础,的确是我的错。 因为 我没注意到你谈的是 编译器。 我只注意到,你忽略语法错误。 我只是认为,明明是语法错误,不应该谈一些和该错误无关的内容。 我知道你的代码没问题,只是没有明确说出来。 我一开始说你没基础,是因为你不谈语法,去谈编译器。 看上去没基础。事实上你很厉害。但是,我一开始不知道你厉害。 而且,不能因为你厉害,就忽略语法错误的问题。 ---------------------------------------------- (C)(P)Flying Wang |
作者: |
|
2014-8-27 21:30:23 | ||||
23楼: | 搞程序的最不缺的就是固执自负的人。不管是群里还是论坛上,总会有人在别人问问题的时候以一种高姿态的方式去俯视提问者。这个帖子里虽然没有俯视提问者,但是却针对了其他回答者。 老子天下第一,其他人都是傻逼。是不是在网上喷一下别人可以让自己很有优越感? 本来delphi的学习环境就不好了。一个问题居然能引来这样的争论。这下好了,又少了一个可以解答问题的高手。 奉劝一句那些自以为自己很牛B的人,不针对wang_80919 (Flying Wang),也不针对pcspace (庸人)。 ---------------------------------------------- - |
作者: |
|
2014-8-28 5:43:32 | ||||
24楼: | 各们一不要争了,问题已经解决了,谢谢各位大神,特别谢谢 pcspace (庸人),按照你的方法解决了 ---------------------------------------------- - |
作者: |
|
2014-8-28 16:04:16 | ||||
25楼: | 这论坛很热闹嘛 有趣。。。 pcspace的这个是用的范围广,刚试试别的lang,这样搞真行。 wang_80919说的语法的,不怎么会Delphi不敢说。 |
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发