草庐IT

c++ - 在没有源代码访问权限的情况下修改旧 Windows 程序以在按键后不调用退出

我有一个较旧的C++Windows程序,我被要求在一个学生项目的kiosk风格环境中运行。在主菜单中,按ESC将退出程序,这是不可取的。在过去,我会捕获键盘中断或其他任何东西,并在可能决定所有这些的case语句中引用JMP或CALL的情况下挖掘NOOP,但在Windows上,一切都经过各种注册的事件处理程序,我还没有大约10年没有完成任何Windows内部工作。是否有一个很好的工具可以在某些WM_EVENT(WM_KEYDOWN是主要目标)消息或类似消息上对程序进行断点,以便我可以缩小可执行文件中进行检查的位置?我目前正在退出各种线程清理和最终退出调用之前进行的各种潜在系统调用,但似乎

python - 将 PyGTK 脚本转换为 EXE 会导致旧的 Windows 2K GUI 外观

当我将我的PyGTK应用程序编译成.exe时,我的应用程序获得了旧的Windows样式/外观。当我使用Py2Exe或PyInstaller编译Python/PyGTK脚本时,如何保留WindowsXPGUI的外观和风格?我是否需要包含一个特殊的.dll,我是否需要创建我自己的.manifest文件并将其链接到我的Py2Exe脚本中(如果需要,如何)?在nativeWinAPI中,我可以使用函数InitCommonControls();切换WindowsXP样式,是否有我可以使用的PyGTK等效函数?注意:如果我在python解释器中运行我的PyGTK脚本,那么GUI具有正确的Windo

c - 旧程序中没有选择单选按钮

大约20(!)年前,我编写了一个大型复杂的C程序。据我所知,当时它在所有方面都运行良好-它可能在Windows95上运行。现在我需要再次使用它。不幸的是,其中的单选按钮似乎不再正常工作(普通按钮都可以正常工作)。当我点击单选按钮时,我得到一些反馈,即Windows正在确认我的点击,只要我的手指放在按钮上,我就会看到按钮文本周围出现虚线并且按钮的圆圈变灰,但是当我松开手指时,我看到所选按钮没有改变。我的怀疑是,我当时可能逃避了一些不良做法,这些做法适用于Windows95,但不再适用于较新版本的Windows,但我正在努力找出我做错了什么。有什么想法吗?编辑:很难提取相关代码,因为该程序

windows - 通过批量创建新文件而不覆盖旧文件

基本上我有这个批处理文件:@echo关闭bps-fbps.txt退出每次我运行批处理时,新的bps.txt文件都会覆盖旧文件。我想要的是每次运行它时都以某种方式出现新文件,例如bps1.txt。如果我再次运行它,它应该以bps2.txt等形式出现。因此,例如,如果我运行批处理3次,我将得到bps.txt、bps1.txt、bps2.txt。 最佳答案 没有内置函数。使用计数器,检查文​​件是否存在,如果不存在则递增计数器并重试:set"counter=":SearchFreeFileifexistbps%counter%.txt(s

当 Windows Installer 在已安装的旧版本中具有相同的 GUID 时,它们会创建具有旧名称的文件夹

我们有一个使用WIX构建的Windows安装程序。它安装在某个服务器上。我们更改了一个文件夹的名称,但相应组件的GUID是相同的。然后我们进行卸载和安装。该文件夹是用旧名称创建的。我试图在Windows注册表中找到解决方案,但失败了。应该在系统上进行哪些清理以删除旧安装程序的痕迹?当然,更改组件的GUID、安装此文件夹是一种解决方法,但无需更改代码就可以实现。 最佳答案 更改名称需要更改组件GUID。任何其他行为都违反了组件规则。 关于当WindowsInstaller在已安装的旧版本中

php - Eclipse 问题不断打开文件的旧版本/副本

我的EclipsePDT版本有问题。我一直打开旧版本的文件,直到我关闭它并再次打开它。所以发生了什么。我用Eclipse编辑一个文件-test.php。我关闭它。然后我将它(test.ph)与WinMerge中的另一个文件进行比较,保存更改,当我在Eclipse中再次打开该文件时,它仍然与我在WinMerge中更改它之前一样。我必须关闭Eclipse并重新启动它才能打开包含最新修改的文​​件。当我打开从FileZilla下载的文件时,我注意到了同样的问题。我有一个在Eclipse中在线打开的文件的本地副本,然后有人在线更改了该文件。我右键单击->FileZilla中的“查看/编辑”,选

c++ - 通过旧的(非 wchar)API 函数在非 ANSI 系统上打开文件

我正在编写一些让我抓狂的中间件。我正在寻找一些I18N专家来帮助我-这对我来说都是全新的。现在这一切都在Windows中,但它也必须在Linux和Mac上运行,尽管我敢打赌它们会很容易。我有一个系统(我无法触摸),它会给我一个类似于wchar_t*的字符串。它接受UTF-8或当前语言环境的输入,并神奇地给我一个wchar_t*。我有另一个我正在使用的API,它只能将文件名作为char*(我也不能触摸)。所以我一直在做的是在wchar_t*中获取我的文件名并使用WindowsAPI函数WideCharToMultiByte并将其转换为char*并将其传递给我的其他API函数。它工作得很好

ruby-on-rails - 卸载 Ruby 以转到旧版本

我正在尝试学习RubyOnRails,但发现我无法真正使用Ruby2.2.2,因为Nokogiri在Windows上还不支持它。如何将Ruby回滚到旧版本,以便在等待Nokogiri推出适用于Windows和Ruby2.2.2的产品时,我可以在旧框架上进行开发?什么是卸载它的最佳方法,这样我就没有可能导致问题的位?这是对我的问题的回应:“Errorinstalling"nokogiri"inaRubyonRailsapplication?” 最佳答案 Linux用户:请记住,并不是每个人都对切换操作系统、运行2台机器、尝试弄清楚双启

windows - 64 位系统的整数大小差异(与我的旧 32 位 pc 系统混淆)

几个月前,我给自己买了一台配备CPUinteli7-2630qm和64位Windows的笔记本电脑。在这个系统下练习我的编程技能时,我遇到了一些整数大小方面的差异,这让我认为这可能是由于我的新64位系统。让我们看一段代码。C代码:#includeintmain(void){intnum=20;printf("%d%lld\n",num,num);return0;}问题:1.)我记得在得到这台新笔记本电脑之前,这意味着我仍在使用我的旧32位系统,当我运行这段代码时,程序将打印整数20由于%lld说明符,它旁边有一些随机数。2.)但是当我使用我的新笔记本电脑时,这种现象不再发生,它会正确地

c++ - 在内部扬声器上播放声音和使用旧的 xp api 功能的可能性?

windowsvista发布后的WindowsFunctionBeep在连接的扬声器而不是内部扬声器上发出哔哔声。有没有办法访问旧功能?是否可以通过保留旧的Windowsapi来实现?或者有什么其他方法可以使这成为可能吗?如果是这样,我希望能够同时设置频率和持续时间。我应该提一下,我实际上是针对windowsxp平台的。 最佳答案 没有。该函数在Kernel32.dll中实现,它在运行时从您当前运行的任何版本的操作系统加载。由于代码不在您的可执行文件或系统DLL中,因此您无法运行它(甚至不要考虑从不同的操作系统版本复制Kernel3