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:
Ich hoffe, Ihr habt eine Antwort auf dieses Problem
Erst mal danke!
Alex
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