首先,這個問題是爲了教育目的。C#剪切工具服務
我的任務是做服務,捕獲屏幕的選擇部分像剪切工具在 Win7我設法做到這一點在贏的形式和它的工作很好,但當我做它在服務其返回黑屏我知道問題這是在不同的會話中運行的服務,所以我的問題是如何使服務運行並返回用戶桌面 ,第二個問題是如何聽取服務中的按鍵(我知道如何在表單中執行)任何請幫助。花點時間。我的表單代碼:
private void CaptureScreen()
{
this.Hide();
Thread.Sleep(300);
bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
bmpScreenshot.Save(DialogSave.FileName, ImageFormat.Jpeg);
pictureBox1.Image = bmpScreenshot;
this.Show();
}
private static Image cropImage(Bitmap img, Rectangle cropArea)
{
Bitmap bmpCrop = img.Clone(cropArea,
img.PixelFormat);
return (Image)(bmpCrop);
}
private Rectangle selectArea(int recX1, int recY1,int recX2,int recY2)
{
int width = recX2 - recX1;
int height = recY2 - recY1;
return new Rectangle(recX1, recY1, width, height);
}
private void btnCrop_Click(object sender, EventArgs e)
{
if (x1 <= 0 || x2 <= 0 || y1 <= 0 || y2 <= 0)
{
MessageBox.Show("Please select area first", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
Rectangle myrectangle = selectArea(x1, y1, x2, y2);
Bitmap myImg = (Bitmap)Image.FromFile(filename);
Image cr = cropImage(myImg, myrectangle);
na = @"F:\\" + Counter + ".jpg";
while (File.Exists(@"F:\\" + Counter + ".jpg"))
{
Counter++;
}
na = @"F:\\" + Counter + ".jpg";
cr.Save(@"F:\\" + Counter++ + ".jpg", ImageFormat.Jpeg);
pictureBox1.Image = cr;
System.Diagnostics.Process prc = new System.Diagnostics.Process();
prc.StartInfo.FileName = @"F:\\";
prc.Start();
this.PrintScreennotifyIcon.BalloonTipText = "Save to" + na;
this.PrintScreennotifyIcon.BalloonTipTitle = "Info";
this.PrintScreennotifyIcon.Visible = true;
this.PrintScreennotifyIcon.ShowBalloonTip(3);
}
}
請編輯問題並添加大寫,句號和其他標點符號,如問號。 – 2011-01-26 08:08:55
@Erno:我做了一些嘗試修復 – abatishchev 2011-01-26 08:25:40
取決於操作系統。這在Windows Server上將無法工作。 – Remy 2011-01-26 08:28:53