Externem Fenster den Fokus geben c#...(Serverseitig)

derAlex

Mitglied
Hallo,

Hab wieder mal ein kleines Problem.

Meine Anwendung soll serverseitig ein externes Fenster öffnen (lokale Datei auf dem Server, z.B. Editor) von diesem Fenster einen PrintScreen machen und die Bitmap-Datei dann in einem Verzeichnis temporär ablegen. Diese Grafik erhält dann der rufende Client zur Ansicht.

Es funktioniert alles, ausser der Tatsache, dass das neu geöffnete Fenster den Fokus nicht erhält und somit auch nicht von dem PrintScreen erfasst wird!

Den Handle (int) des geöffneten Fensters hab ich bereits gelesen...jetzt ist nur noch die Frage, wohin und wie ich die Nachricht an das neue Fenster schicken kann, damit es den Fokus erhält!

Beispiel:

Code:
public void MakeScreenshotAndSave(string theInPath,string theOutPath)
{
 try
 {
 //Start des grafischen editors
 //das in einem neuen Prozess
 Process myProcess = new Process();
 myProcess.StartInfo.FileName = theInPath;
 myProcess.Start(); 
 //fokus auf externe applikation setzen
 int handle = GetHwnd("GroupRights - Editor");
				
 if(handle > 0)
 {
  //dem neuen fenster den Fokus geben
  //?
  //?
  //print screen ausführen
  SendKeys.Send("{PRTSC}");
  //instanz der Zwischenablage
  IDataObject data = Clipboard.GetDataObject();
  //prüfen ob sich ein bitmap darin befindet
  if (data.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap))
   {
   //neues Bitmap aus zwischenablage erstellen
   System.Drawing.Bitmap newBitmap = (System.Drawing.Bitmap)data.GetData  (System.Windows.Forms.DataFormats.Bitmap);
   //Speichern des Bitmaps am Ausgabepfad
   newBitmap.Save(theOutPath + "\\test.bmp");
   }
  //Prozess beenden
  //myProcess.Kill();
 }
  myProcess.CloseMainWindow();
 				
 }
 catch(Exception e)
 {
 MessageBox.Show (e.Message,"Fehler",MessageBoxButtons.OK,MessageBoxIcon.Hand );
 }
}

Ich hoffe, Ihr habt eine Antwort auf dieses Problem
Erst mal danke!

Alex
 

Neue Beiträge

Zurück