我正在使用一个应用程序,其中我必须开发的选项之一是更改 Windows 10 光标大小。就我而言,更改整个窗口的光标大小很重要,而不仅仅是针对特定的 Java 应用程序窗口。目前,我可以通过修改 HKEY_CURRENT_USER → 控制面板 → Cursors 目录下的 Windows 注册表属性来更改特定游标类型的大小。
不幸的是,我需要将光标大小设置为大于 32x32px。
在某处我找到了一个解决方案,可以通过位图覆盖现有的鼠标光标并只跟随光标的位置,但我不知道如何开始实现。
我在互联网上搜索,我发现一些应用程序允许用户修改整个 Windows 10 的光标大小——例如,这是 CursorFX。
您知道如何以编程方式增加光标大小吗?
最佳答案
您可以使用 SetSystemCursor API 设置您想要的任何大小的光标.您不仅限于 SM_CXCURSOR/SM_CYCURSOR指标(参见 GetSystemMetrics function )—它们只是告诉您系统的默认光标大小,通常为 32×32(或在高 DPI 系统上为 48×48)。我知道这可以追溯到 Windows XP;我很确定它比那更有效。
关键在于如何加载游标资源。您可能已经知道,您需要一个 HCURSOR要传递给 SetSystemCursor 的对象.这是一个句柄到光标,在 Windows API 说。加载游标的明显方法是调用 LoadCursor API function ,但这是一个非常古老的函数,在 16 位 Windows 中引入,并且仅限于加载大小为 SM_CXCURSOR 的游标。 × SM_CYCURSOR .所以你不想要那个†;您要调用 LoadImage ,正如文档所示,这是现代替换功能。它需要一个枚举整数参数,指示要加载的图像类型:IMAGE_BITMAP (0), IMAGE_ICON (1), IMAGE_CURSOR (2) 或 IMAGE_ENHMETAFILE (3).显然,IMAGE_CURSOR是你想在这里使用的。
您可以从嵌入到应用程序二进制文件中的游标资源(作为 Win32 资源)加载,也可以从磁盘中的 *.CUR/*.ANI 文件加载。要执行后者,请通过 LR_LOADFROMFILE标志到 LoadImage功能。
我不知道 Java,所以我无法使用任何需要的语法将其转换为 Java,以进行本地 Windows API 调用,但这里是 C 中的代码:
// Load from a CUR file, at C:\LargeCursor.cur, with a size of 64x64 pixels
HCURSOR hCursor = (HCURSOR)LoadImage(NULL,
"C:\\LargeCursor.cur"),
IMAGE_CURSOR,
64, 64,
LR_DEFAULTCOLOR | LR_LOADFROMFILE);
assert(hCursor != NULL); // verify that load was successful
BOOL result = SetSystemCursor(hCursor, OCR_NORMAL);
assert(result != FALSE); // verify that the change was successful
// Load from an embedded resource, IDC_CURSOR, with a size of 64x64 pixels
HCURSOR hCursor = (HCURSOR)LoadImage(GetModuleHandle(NULL),
IDC_CURSOR),
IMAGE_CURSOR,
64, 64,
LR_DEFAULTCOLOR);
assert(hCursor != NULL); // verify that load was successful
BOOL result = SetSystemCursor(hCursor, OCR_NORMAL);
assert(result != FALSE); // verify that the change was successful
SetSystemCursor需要 OCR_* 之一常量来标识要更改的系统游标类型。当您包含 Windows.h 时,默认情况下不包含这些;你必须定义 OEMRESOURCE之前包括 Windows.h .不过,我假设对于 Java,您只是将常量自己定义为枚举值。在这种情况下,它们都可以在 the MSDN documentation for SetSystemCursor 中找到。 .例如,OCR_NORMAL是 32512 .HCURSOR ,然后设置 HCURSOR使用 SetSystemCursor .而且,自然而然地,问题在于 Windows 光标字形只是位图,因此它们不是无限可扩展的。您将很快开始失去分辨率,因此不建议这样做。如果您需要大尺寸光标,则需要提供您自己的图像。SetSystemCursor 的功能无论如何,因为SetSystemCursor通过调用 DestroyCursor 销毁指定的游标.你需要做 LoadCursor然后 CopyCursor调用前SetSystemCursor .这在 SetSystemCursor 的文档中都有详细说明。 ,但正如我所说,您不必再担心这个,因为您只需使用 LoadImage (没有 LR_SHARED 标志)。
关于java - Windows 光标大小大于可用的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014692/
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/