我有一个关于字符串规范化的问题,它已经得到解答,但问题是,我无法正确规范化需要3次击键的韩文字符输入“ㅁㅜㄷ”(来自击键“ane”),结果是“무ㄷ”而不是“묻”。输入“ㅌㅐㅇ”(来自击键“xod”),结果是“태ㅇ”而不是“탱”。这是Dean先生的回答,虽然它适用于我最初给出的示例......但它不适用于我上面引用的示例。如果您使用的是.NET,则可以执行以下操作:vars="ㅌㅐㅇ";s=s.Normalize(NormalizationForm.FormKC);在原生Win32中,对应的调用是NormalizeString:wchar_t*input="ㅌㅐㅇ";wchar_tout
如何在Windows8中获取事件窗口的标题颜色?我尝试调用GetSysColor(COLOR_ACTIVECAPTION)但它返回不同的颜色。这很奇怪,因为在Windows7中它工作正常。有没有其他方法可以获取事件窗口的标题颜色或任务栏的颜色? 最佳答案 DWORDWINAPIGetSysColor(_In_intnIndex);对于GetSysColor()函数,如果nIndex参数超出范围,则返回值为零。因为零也是一个有效的RGB值,所以您不能使用GetSysColor()来确定当前平台是否支持系统颜色。相反,请使用GetSys
我有一个CDLL,想从DelphiXE3Update2调用它。奇怪的是,在我的项目中动态调用它似乎与静态调用它不同。这是要重现的“最小”代码(我已经更改了Lib/functionnames):programtestProject;{$APPTYPECONSOLE}{$R*.res}usesSystem.SysUtils,System.classes,Windows;functionkeylist_open(keylist:PPointer):Integer;external'libLib';varHandle:HINST;DLLName:PChar='libLib.dll';typeT
我有一个使用旧报告库(ReportPro)的应用程序。在Windows764上,有时无法找到默认打印机。我做了一些挖掘并在Windows注册表中发现了问题。ReportPro通过GetProfileStringwindowsAPI确定可用的打印机。它从这里获取可用打印机的列表:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Devices它从这里获取默认打印机:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\Device
为Unicode实用程序和界面使用Delphi2007和TMS组件(不能选择升级到Delphi2009以获得Unicode支持)。我将文件名列表存储在字符串列表(TTntStringList)中。它已排序且不区分大小写。默认排序例程使用CompareStringW(LOCALE_USER_DEFAULT,NORM_IGNORECASE,...)来比较字符串(对于Find也是如此)。然而,这是一个问题,因为这会将dummyss.txt等同于dummyß.txt(例如),但在NTFS上,将这两个文件放在同一文件夹中是完全合法的,即它们被视为不同的名称。我的理解是,在Vista和更新版本上,
我有一个复合视觉控件,它由编辑框和一个下拉按钮组成。下拉按钮不是窗口控件,而是绘制在编辑框上。我通过以下调用限制编辑的宽度:SendMessage(Handle,EM_SETMARGINS,EC_RIGHTMARGIN,(DropDownButtonWidth+2)shl16);它在WindowsXP下工作正常但在Windows7下不起作用。在后一种情况下,当焦点编辑框与下拉按钮重叠并删除其图像时。在两种操作系统下限制编辑框矩形的正确方法是什么?PS:我也试过另一种方法:SendMessage(Handle,EM_GETRECT,0,LongInt(@Loc));Loc.Bottom:
我有几个.reg(Windows注册表)文件(由外部应用程序生成)需要合并到Windows注册表中。现在我正在使用ShellExecuteEx函数调用regedit.exe应用程序,将文件名作为参数传递(并且工作正常),但我想知道是否存在任何WinAPI函数或其他方式合并该文件,而无需调用regedit.exe应用程序。 最佳答案 我希望答案是否定的。通过winapi,您可以将文件作为.ini文件读取,并相应地进行适当的注册表修改。如果regedit.exe做的事情与此不同,我会感到惊讶。
目前DelphiXE只能在我的盒子上使用,我不知道Delphi2010/XE2是否引入了一些突破性的变化。请帮我更新以下定义:TVmt=packedrecordSelfPtr:TClass;IntfTable:Pointer;AutoTable:Pointer;InitTable:PFieldTable;TypeInfo:PTypeInfo;FieldTable:Pointer;MethodTable:Pointer;DynamicTable:Pointer;ClassName:PShortString;InstanceSize:Cardinal;Parent:PClass;{$IFD
我有一个应用程序有一些控件(按钮、编辑等)的窗口。我需要模拟用户事件(如Tab单击和输入文本)。我正在使用keybd_event在制表符排序控件(编辑框)之间移动焦点并向它们输入文本。但我需要知道当前焦点控件的句柄(例如从中获取文本或更改其样式)。我该如何解决?附言我现在正在编写Delphi,但这并不重要(Win-API无处不在)。 最佳答案 请参阅GetFocus中的备注部分'用于解释以下示例的文档。functionGetFocus:HWND;varWnd:HWND;TId,PId:DWORD;beginResult:=windo
我的应用程序隐藏了它的窗口(因此隐藏了任务栏按钮)并且只停留在通知区域,代码如下:Form1.Hide;当我点击通知图标时,窗口会显示以下代码:Form1.Show;Application.Restore;但是我想在执行第二个实例时显示窗口。我可以使用“文件映射”将任何数据从第一个实例传递到第二个实例。到目前为止,我只设法在窗口最小化时如何显示它(存在任务栏按钮),代码如下:ifIsIconic(FirstInstanceApplicationHandle)thenShowWindow(FirstInstanceApplicationHandle,SW_RESTORE);SetFore