2013-03-11 187 views
-2

我正在嘗試將窗體移到頂部,截取屏幕截圖並保存,然後使用以下代碼將其最小化。將窗口帶到頂部

  this.WindowState = FormWindowState.Maximized; 
      this.FormBorderStyle = FormBorderStyle.None; 
      this.TopMost = true; 

      Application.DoEvents(); 

      string keys = "%" + "{PrtSc}"; 
      SendKeys.SendWait(keys); 
      Clipboard.GetImage().Save(imagePath, ImageFormat.Jpeg); 

      this.FormBorderStyle = FormBorderStyle.Sizable; 
      this.WindowState = FormWindowState.Minimized; 
      this.TopMost = false; 

我以爲代碼總是會把窗口放在頂部並截取屏幕截圖。但是我注意到它不是100%工作:機器速度太慢,所以當執行窗口的代碼執行時,整個窗口不會出現。 有時它並沒有把它放在最前面,所以圖片包含了一些用戶活動。

我怎樣才能把它完全放到最前面,等到它完成後再截屏並將其反轉。

請注意,應用程序中有一個表單。

+2

http://stackoverflow.com/questions/362986/how-may-i-capture-the-screen-in-a-bitmap – Nathan 2013-03-11 13:56:20

+0

當你打開窗體時,你可以使用formname.ShowDialog();它會成爲最頂級的 – Max 2013-03-11 13:58:40

+0

任何具體的失敗或只是爲了好玩的原因? – 2013-03-12 03:47:37

回答

0

也許增加一個計時器。運行代碼的第一部分(直到幷包括:「Application.DoEvents();」),並啓動計時器。在時間代碼上檢查「this.TopMost」狀態,並且只有當它是最上面的形式時才拍攝屏幕截圖並停止定時器。