2010-06-13 44 views
10

Tôi muốn mở từ ứng dụng C# (trình phát flash độc lập) và đặt vị trí thành (0,0) trên màn hình. Tôi có thể làm cái này như thế nào? Cho đến nay tôi đã quản lý để mở flashplayer:Quá trình mở và thay đổi vị trí cửa sổ

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

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
     } 
    } 
} 

Trả lời

6

Hãy thử SetWindowPos như mô tả here. This trang cho biết cách gọi từ C#.

+2

Không phải là câu trả lời hay vì không có mã làm việc nào được cung cấp. Hơn nữa, trang hiển thị "cách gọi nó từ C#" là một mess _and_ không thực sự cung cấp một ví dụ đầy đủ chức năng (phương thức chưa biết GetActiveWindowHandle). Câu trả lời thấp hơn của tác giả là tốt hơn nhiều. Ngắn gọn và chức năng. –

5

Khi bạn khởi động Process, tài sản MainWindowHandle của nó nên được đặt thành một số Windows xử lý có thể được sử dụng để thao tác với cửa sổ chính của ứng dụng bắt đầu. Tôi không nghĩ rằng có một cách để di chuyển nó trực tiếp bằng cách sử dụng .NET API, nhưng bạn có thể sử dụng chức năng API MoveWindow thông qua P/Invoke.

Dưới đây là một số liên kết nơi bạn có thể tìm thêm thông tin:

+1

Process.WaitForInputIdle() sẽ là quan trọng. –

29

cảm ơn các bạn, nó hiện đang hoạt động! :)

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

namespace swflauncher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process flash = new Process(); 
      flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 

      flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe"; 
      flash.Start(); 
      Thread.Sleep(100); 

      IntPtr id = flash.MainWindowHandle; 
      Console.Write(id); 
      Program.MoveWindow(flash.MainWindowHandle, 0, 0, 500, 500, true); 
     } 

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


    } 
} 
+4

Tốt hơn nhiều so với câu trả lời bởi vì bạn thực sự làm phiền để chia sẻ mã làm việc, cảm ơn. – u8it

Các vấn đề liên quan