gpt4 book ai didi

c# - user32 MoveWindow 不适用于 C#、Windows 7、控制台应用程序

转载 作者:行者123 更新时间:2023-12-01 20:21:42 25 4
gpt4 key购买 nike

我根本不是 Windows 开发人员(我做 AS3 的东西),但我在 Visual C# 2010 中编写了这个 C# 控制台应用程序以测试某些内容。该应用程序应该打开一个窗口并调整其大小和位置。

我打开一个空白的 Chrome 窗口(标题为“Untitled”),但控制该窗口的函数不起作用(即使调试器在它们上停止 - 意味着应用程序确实找到了正确的窗口)。

有什么想法吗?

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{


[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hwnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hwnd, int nCmdShow);


static void Main(string[] args)
{
Process[] processlist = Process.GetProcesses();

foreach (Process proc in processlist)
{
if (!String.IsNullOrEmpty(proc.MainWindowTitle) && proc.MainWindowTitle == "Untitled")
{
ShowWindow(proc.Handle, 3);
MoveWindow(proc.Handle, 0, 0, 100, 100, true);
}
}


}
}
}

最佳答案

   MoveWindow(proc.Handle, ...);

proc.Handle 不是你想象的那样。它是进程句柄,而不是您感兴趣的 Process.MainWindowHandle。

您问这个问题是因为您不检查错误。所以你不知道为什么它不起作用。这些函数返回bool,false表示你弄错了。抛出 Win32Exception,这样这并不是完全无法诊断的:

if (!MoveWindow(proc.MainWindowHandle, ...)) {
throw new Win32Exception();
}

关于c# - user32 MoveWindow 不适用于 C#、Windows 7、控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com