Articles of winapi

如何在VB6中执行进一步的代码之前等待shell进程完成

我有一个小型的VB6应用程序,我使用Shell命令来执行程序。 我将程序的输出存储在一个文件中。 然后我读取这个文件,并使用VB6中的msgbox将输出放在屏幕上。 这是我的代码现在看起来像: sCommand = "\evaluate.exe<test.txt " Shell ("cmd.exe /c" & App.Path & sCommand) MsgBox Text2String(App.Path & "\experiments\" & genname & "\freq") 问题是VB程序使用msgbox打印的输出是文件的旧状态。 是否有一些方法来执行VB代码,直到我的shell命令程序完成,以便我得到输出文件的正确状态,而不是以前的状态?

你如何以Windows编程方式resize和移动Windows API的窗口?

你如何以编程方式调整和Windows API的Windows移动? 场景是:我想垂直平铺两个窗口(80%/ 20%的宽度比例)。

任务pipe理器是Windows 10的一个特殊的“总是在最前面”窗口?

如果我的窗口具有“始终在最上面”的扩展样式集,那么我认为它是所有没有“始终在最前面”样式集的窗口的顶部,以及那些具有“总在最前面”样式集的窗口但在我的窗口被激活之前被激活。 为了testing这个function,我打开任务pipe理器窗口 – 将其设置为始终在上面,然后打开我的窗口( myWindow )。 在Windows 7中,我观察预期的行为 – myWindow在任务pipe理器之上。 但是,在Windows 10中,情况并非如此。 任务pipe理器“始终在其他窗口的顶部”,即使这些窗口本身具有“始终在最前面”样式集。 Windows 10中的任务pipe理器有什么特别之处吗? 如果是的话,是否有一些工作将我的窗口放在任务pipe理器的顶部? 我试图简单地使用BringWindowToTop函数,但不起作用。 setWindowPos和HWND_TOP都不会作为hWndInsertAfter参数的值。

如何显示未注册文件扩展名的“打开方式”对话框?

我想让用户为当前未注册的文件扩展名select一个关联(打开)。 目前我告诉API通过使用ShellExecute打开文件,它返回一个ERROR_NO_ASSOCIATION错误代码。 有没有办法告诉API它应该让用户select一个新的关联?

为什么最大化的Delphiforms比GetSystemMetrics值宽8个像素?

如果我最大化一个delphi窗体的宽度和高度值是8个像素,相应的GetSystemMetrics SM_CXSCREEN和SM_CYSCREEN? 例如: 当我右键单击我的屏幕,并获得属性我有一个1680 X 1050屏幕分辨率。 这些是从GetSystemMetrics(SM_CXSCREEN)和GetSystemMetrics(SM_CYSCREEN)返回的相同值。 当我在Delphi应用程序中最大化表单时,我得到了1688的宽度和1058的高度。有8个像素的差异。 是什么导致这种差异?

在“locking”屏幕后面会发生什么?

我一直在研究Windows自动化和监控。 当我locking一台Windows机器的屏幕时究竟发生了什么? 目前我正在使用Windows 7,如果切换到Vista或服务器版本,行为是否有很大差异? 还有一个可以通过api访问的桌面吗? 我知道我仍然可以发送按键和鼠标点击到特定的窗口(通过ControlSend和ControlClick ),但似乎没有“桌面”本身。 是否有人能够对这件事情有所了解,或者将我指向一个可读的来源,在那里我可以概览这个话题?

当Windows被locking时取得桌面屏幕截图(Win + L)

我想在Windowslocking的情况下(Win + L)截取桌面。 标准方法制作黑屏,像素代码: COLORREF color = GetPixel(hdc, x, y); 等于-1。 用户模式程序和服务都不能捕获有用的图像。 有任何想法吗?

Vim:Windows下terminal的编码(Unicode)

我不知道为什么,但是这个话题似乎被logging得很差,而且有争议,因为没有人知道真正的答案(除了也许很less有人回答的穆勒纳尔先生之外)。 所以基本上我在这里提出了一个讨论,并且很快就死了,可能是因为在Windows上没有太多人在terminal模式下使用Vim。 我的编码设置如下所示: if has('multi_byte') if empty(&termencoding) let &termencoding = &encoding endif let &encoding = 'utf-8' let &fileencoding = 'utf-8' endif 当然,我在GVim下运行也没有问题:可以input任何字符,我修补的Powerline的Consolas工作得很好。 当我尝试在terminal模式下运行Vim时,问题就开始了。 我使用ConEmu ,一个function丰富的Windowsterminal模拟器。 它声称正式支持Unicode的开箱即用。 例如,我可以运行以下testing脚本: chcp 65001 & (cmd /c type "%~dpn0.cmd") & pause & goto :EOF English: texts, web pages and documents Graves,etc: à á â ã ä å æ ç è […]

Delphi – CreateProcess – 执行多个命令

我想用CreateProcess()调用来实现以下function: 更改为svn工作副本 执行svn命令 将输出传输到文件 我用下面的函数试试这个 procedure TQPortMainForm.CmdMigrationClick(Sender: TObject); var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CreateOk: boolean; input: String; begin { fill with known state } FillChar(StartInfo, SizeOf(TStartupInfo), #0); FillChar(ProcInfo, SizeOf(TProcessInformation), #0); StartInfo.cb := SizeOf(TStartupInfo); //debug input := 'D: && cd D:\Qport\trunk\Qport\ && ' + SVN_PATH + ' log > C:\users\PhilippKober\UNIQUE_NAME_BLUB.txt'; CreateOk := CreateProcess(nil, PChar(input), nil, nil, […]

为什么当memset等已经有ZeroMemory等存在?

为什么在C标准库中有memset和相关的调用时,WindowsMemory中存在ZeroMemory和类似的调用? 我应该打给谁? 我可以猜到答案是“依赖”。 什么?