2013-06-19 194 views
2

我不是Windows開發人員(我做的AS3的東西),但我編寫了這個C#控制檯應用程序在visual c#2010中,以測試一些東西。 應用程序應該打開一個窗口並調整它的大小和位置。user32 MoveWindow不適用於C#,Windows 7,控制檯應用程序

我打開一個空白的Chrome窗口(標題爲「無標題」),但控制窗口的功能不起作用(即使調試器停在它們上面 - 意味着應用程序確實找到了正確的窗口)。

有什麼想法爲什麼?

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); 
       } 
      } 


     } 
    } 
} 

回答

6
MoveWindow(proc.Handle, ...); 

proc.Handle是不是你認爲它是。它是進程句柄,而不是您感興趣的Process.MainWindow句柄。

您在問這個問題是因爲您沒有檢查錯誤。所以你不知道爲什麼它不起作用。這些函數返回bool,false表示您弄錯了。拋出一個Win32Exception,所以這是不完全undiagnosable:

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

thanx很多漢斯! – Saariko

相關問題