我想模拟鼠标滚轮,下面的代码能向上滚动,怎么样下向滚动啊

mouse_event( MOUSEEVENTF_WHEEL,0,0,WHEEL_DELTA,0);

我把参数设置为
mouse_event( MOUSEEVENTF_WHEEL,0,0,-WHEEL_DELTA,0);
编译通不过啊
----------------------------------------------
-

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-23 17:09:14
1楼: http://baike.baidu.com/view/1080208.htm?fr=aladdin

自己注意看  dwData
----------------------------------------------
-

作者:
xfyserver (s) ▲▲▲▲▲ -
普通会员
2014-8-23 17:37:56
2楼: 鎴戞槸鐢ㄧ殑delphi锛岄偅涓弬鏁颁笉鑳戒负璐熷晩锛岃礋鐨勪笉鑳界紪缁?
----------------------------------------------
-
作者:
xfyserver (s) ▲▲▲▲▲ -
普通会员
2014-8-23 17:38:34
3楼: 鎴戞槸鐢ㄧ殑delphi锛岄偅涓弬鏁颁笉鑳戒负璐熷晩锛岃礋鐨勪笉鑳界紪缁?
----------------------------------------------
-
作者:
ptdelphi (Delphi) ▲▲△△△ -
注册会员
2014-8-23 19:42:23
4楼: 泰达星语,看懂啊,楼上
----------------------------------------------
还可以更好
作者:
xfyserver (s) ▲▲▲▲▲ -
普通会员
2014-8-23 21:34:42
5楼: 我用的是DELPHI XE6,mouse_event( MOUSEEVENTF_WHEEL,0,0,WHEEL_DELTA,0);这个代码只能往上移,百度说,往上为正,往下为负,但设置-WHEEL_DELTA 或 -10等 数值,都不能编译。
谁能教教我啊
----------------------------------------------
-
作者:
xfyserver (s) ▲▲▲▲▲ -
普通会员
2014-8-25 10:14:26
6楼: 没有人知道吗
----------------------------------------------
-
作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 10:24:39
7楼: var
i:integer;
begin
i:=-120;
mouse_event( MOUSEEVENTF_WHEEL,0,0,i,0)
end;

这样是可以编译通过的 , 但是是否可以运行 ,请自行测试
----------------------------------------------
-

作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
2014-8-26 10:28:26
8楼: 如果不是看到楼上,我居然没看出楼主的语法错误。
也没看到,楼主不是代码没效果。
而是,编译不通过。
幸亏,从来没发言,不然就糗大了。
----------------------------------------------

(C)(P)Flying Wang
作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 10:38:39
9楼: 依赖Delphi自身不是太好的习惯,Delphi也是在翻写Windows的API,还是向微软靠拢,深入研究的好。

WHEEL_DELTA 可以看一下Delphi内的定义,直接写死了 120 ,正数,表示正向 滚轮一圈。而微软的API呢 ,可以查MSDN的英文版,和百度百科上的中文解释是一样的,明确说明,负数表示反向。

我今天看了楼主的回复,实验了一下,的确编译不过,但是自己用变量呢,因为变量要在运行的时候赋值,编译的时候是无法检测的,肯定就可以编译了。但是楼主没给出具体的代码,是否可以运行,是否有效果,需要实际测试!
----------------------------------------------
-

作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
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

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 11:08:22
11楼: To : Flying Wang

Delphi编译器的代码你看过? 我是没看过的,至于说语法跟编译器自身有没有直接关联,语法的规则是编译器定的,编译器编译不过,你说语法没问题,它就是不给你编译,你能怎么办?

至于说基础,我感觉你还没资格来说这话,你什么时间把Win3.1的内核分析读透彻,什么是把Win2000的代码多读几遍再给我说基础吧。

0 - WHEEL_DELTA = -120  编译器能检测到是负值,不编译的,你如果不能看明白我说的含义,请闭上你高贵的嘴

另外,向微软靠拢没有错,除非你不开发windows平台的软件。
----------------------------------------------
-

作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
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

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 11:26:49
13楼: 问题是人家楼主说了,是编译器编译不过,那么你能去改编译器?我只不过告诉楼主如何去做,实际上能编译,是一个解决方法。

你讲语法,讲到天亮,编译器不给你编译,有什么用?

去研究一下编译器,再来给我说教吧,推荐你去研究一下Dev C++

至于懂基础,还不是你有资格说的,我是从DOS下用Turbo Pascal写到现在的,你说的课程哪个大学的计算机课程没教,难道就你读过书是怎么滴。

向Linux靠拢? 别告诉我你现在用的是Linux
----------------------------------------------
-

作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
2014-8-26 11:31:24
14楼: 楼上的看不懂我的意思,是我的错,我的语文是体育老师教的。

我哪里说过要改 编译器的?

我们有那个水平,还在这里混?

地球人对付 编译不过的标准做法不是修改自己的代码吗?
修改自己的代码,直到编译通过为止啊。
不懂语法,能知道如何修改吗?
还有,除了要修改语法错误,还要记得,别搞出逻辑错误。

你语法都不懂,还能写出代码来?

你语法错误,不去改你自己的错误,你居然能理解成,修改编译器?

懒得理你这种思维奇怪的家伙。
----------------------------------------------

(C)(P)Flying Wang

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 11:47:54
15楼: Flying Wang:你是不是从精神病院出来的? 我写的代码你编译一下试试,哪个地方错误??神经病
----------------------------------------------
-
作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
2014-8-26 11:49:19
16楼: 楼上的,老子可没说你代码有错误。

告诉你一个其他代码,不表示你的代码就有错误。
----------------------------------------------

(C)(P)Flying Wang

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
2014-8-26 11:54:40
17楼:  。
----------------------------------------------
-
作者:
crystalmoon (黑夜杀手) ▲▲▲▲▲ -
盒子活跃会员
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的负数范围。
----------------------------------------------
-
作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
2014-8-26 15:43:15
19楼: 楼上分析的很对。
----------------------------------------------

(C)(P)Flying Wang
作者:
hs_kill (hs_kill) ▲▲▲▲▲ -
普通会员
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/

作者:
pcspace (庸人) ▲▲▲▲▲ -
盒子活跃会员
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似乎有点过于高人的表现,我不怎么认可此种态度。至于以后的争论,本人概不参与。以后论坛的问题呢,也概不回答了,避免出现类似的纠结性的争论出现。
----------------------------------------------
-

作者:
wang_80919 (Flying
Wang)
▲▲▲▲△ -
普通会员
2014-8-27 10:17:30
22楼: 我说你没基础,的确是我的错。

因为 我没注意到你谈的是 编译器。

我只注意到,你忽略语法错误。

我只是认为,明明是语法错误,不应该谈一些和该错误无关的内容。

我知道你的代码没问题,只是没有明确说出来。

我一开始说你没基础,是因为你不谈语法,去谈编译器。

看上去没基础。事实上你很厉害。但是,我一开始不知道你厉害。

而且,不能因为你厉害,就忽略语法错误的问题。
----------------------------------------------

(C)(P)Flying Wang

作者:
lwsxln (lwsxln) ▲▲▲△△ -
注册会员
2014-8-27 21:30:23
23楼: 搞程序的最不缺的就是固执自负的人。不管是群里还是论坛上,总会有人在别人问问题的时候以一种高姿态的方式去俯视提问者。这个帖子里虽然没有俯视提问者,但是却针对了其他回答者。

老子天下第一,其他人都是傻逼。是不是在网上喷一下别人可以让自己很有优越感?

本来delphi的学习环境就不好了。一个问题居然能引来这样的争论。这下好了,又少了一个可以解答问题的高手。

奉劝一句那些自以为自己很牛B的人,不针对wang_80919 (Flying Wang),也不针对pcspace (庸人)。
----------------------------------------------
-

作者:
xfyserver (s) ▲▲▲▲▲ -
普通会员
2014-8-28 5:43:32
24楼: 各们一不要争了,问题已经解决了,谢谢各位大神,特别谢谢  pcspace (庸人),按照你的方法解决了
----------------------------------------------
-
作者:
cdp85 (cdp) ▲▲△△△ -
注册会员
2014-8-28 16:04:16
25楼: 这论坛很热闹嘛 有趣。。。
pcspace的这个是用的范围广,刚试试别的lang,这样搞真行。
wang_80919说的语法的,不怎么会Delphi不敢说。

模拟鼠标向下滚动 http://bbs.2ccc.com/topic.asp?topicid=461769的更多相关文章

  1. Delphi下利用WinIo模拟鼠标键盘详解 有参考价值

    https://blog.csdn.net/fgrass_163/article/details/6365296 Delphi下利用WinIo模拟鼠标键盘详解 2011年04月26日 21:03:00 ...

  2. JS判断鼠标向上滚动还是向下滚动

    js如何判断滚轮的上下滚动,我们应该都见到过这种效果,用鼠标滚轮实现某个表单内的数字向上滚动就增加,向下滚动就减少的操作,这种效果是通过js对鼠标滚轮的事件监听来实现的.今天简单的研究了一下如何使用j ...

  3. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

  4. JS如何判断鼠标滚轮向上还是向下滚动

    前几天偶然看到某前端群有人在问:JS如何判断鼠标滚轮向上还是向下滚动? 我想了想,有点蒙蔽,心想难道不是用scrollTop来判断吗? 但我不确定,也出于好奇心,于是开始了一番探索 思路:通过even ...

  5. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  6. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

  7. 使用Robot类模拟鼠标、键盘事件

    Robot类用于模拟鼠标.键盘事件,生成本机系统输入事件.Robot 的主要用于自动化.自运行的程序和其他需要自动控制鼠标和键盘的程序 相当于实际操作的效果,不仅仅只是生成对应的鼠标.键盘事件.比如R ...

  8. C# 模拟鼠标移动和点击

    我们需要用到的mouse_event函数,位于user32.dll这个库文件里面,所以我们要先声明引用. [System.Runtime.InteropServices.DllImport(" ...

  9. C#模拟鼠标、键盘操作

    C语言 在程序中打开网页,模拟鼠标点击.键盘输入 一.简述         记--使用C语言 打开指定网页,并模拟鼠标点击.键盘输入.实现半自动填写账号密码,并登录网站(当然现在的大部分网站都有验证码 ...

随机推荐

  1. 第八讲 shiro 整合 ssm

    1.整合ssm并且实现用户登录和菜单权限 2.将shiro整合到ssm中 (1)添加shiro相关jar包 (2)在web.xml中添加shiro配置 <!-- 新增shiro配置 --> ...

  2. 谈谈mybatis中的#与$的区别

    #相当于对数据 加上 双引号,$相当于直接显示数据 . #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:", 如果传入的值是id,则解析成的sql为order by &q ...

  3. 图解Qt安装(Linux平台)

    http://c.biancheng.net/view/3886.html Linux 发行版虽然众多,但 Qt 安装过程大同小异,本节以 CentOS 7 为例来演示 Qt 的安装. 在<Qt ...

  4. Cacti+nagios 整合监控部署文档

    目录 Cacti+nagios监控部署步骤... 2 一.Cacti安装... 2 1需要安装的依赖软件包:... 2 2安装rrdtool 2 3启动数据库和httpd服务... 3 4将serve ...

  5. fpga新建nios

    [FPGA]基于Qsys的第一个Nios II系统设计 (2013-12-12 21:50:08) 转载▼ 标签: fpga niosii qsys helloword quartusii 分类: 嵌 ...

  6. 一、left

    一.left - right 就是遍历(以左边遍历,以右边遍历) inner join 就是求公共部分的结果集 left join 查询结果 right join结果 inner join 解决的办法 ...

  7. Linux之vim按键

    1. 移动光标的方法 h或左箭头 光标向左移动一个字符 j或下箭头 光标向下移动一个字符 k或上箭头 光标向上移动一个字符 l或右箭头 光标向右移动一个字符 如果想要向下移动30行,可以使用“30j” ...

  8. Peakvue和自相关技术轴承诊断

    什么是应力波 应力波产生于“金属与金属相互碰撞的事件” 加速度传感器捕捉含有具有短时特性应力波的轴承振动信号 应力波是一种非常短暂的连续的脉冲信号, 通常在百万分之一秒到千分之一秒的区间范围内, 它是 ...

  9. tf模型可视化工具

    一方面可以用tensorboard来可视化,更方便的是用如下网址: https://lutzroeder.github.io/netron/

  10. python List 常用方法

    list是python常用的数据类型,属于可变的数据类型.用[]表示,里面的元素用','隔开,并且里面的元素类型可以不同,对于每个元素,list都有一个索引一一对应,第一个元素的索引是0,第二个是1, ...