Autor Beitrag
Sergeant
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 03.01.10 21:04 
Hallo!

Programmiere noch nicht sooo lange, aber eins sei gesagt: "Ich habe die Suchfunktion benutzt!".

Ich habe einen Thread, der eine andere Anwendung "blind" steuert anhand von Positionsangaben die ich zuvor ermittelt habe.
Dabei verschwindet die Form im Hintergrund(könnte sie auch im Vordergrund behalten, aber da stört sie nur und ist im Weg).

Nun möchte ich natürlich auch mal spontan die Endlosschleife verlassen(muss wirklich endlos sein, weil das Ende nicht bekannt ist bzw. jeden Tag sich verändern kann). Dies wollte ich mit einem Tastendruck von F9(es geht auch eine andere) realisieren.

Wie frag ich das ab? Vermute mal mit Events, aber geht das auch ohne eine Form? Habe nur Beispiele im Netz gefunden, bei deinen irgendein GUI-Objekt ein Event ausgelöst hat.

Hat jemand ein Tutorial parat? Oder die Güte mir dies etwas ausführlicher zu erklären. Habe mit Events nicht wirklich viel Erfahrung gemacht. Die Events die ich benutzt habe, hat mit Visual C# Express automatisch zur Verfügung gestellt. Der Rest war dann ein Kinderspiel.

Hoffe ich hab mich klar ausgedrückt. Sollte dennoch etwas offen sein, bitte fragen.

Vielen Dank

Sergeant
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: So 03.01.10 21:30 
Was du benötigst, ist ein systemweiter Tastaturhook:
www.codeproject.com/KB/cs/globalhook.aspx
Die Assembly hat sogar eine Komponente, die man einfach auf die Form ziehen kann.
Das sollte dann einfach zu benutzen sein.

Grüße, JasonDelife.


Zuletzt bearbeitet von JasonDelife am So 03.01.10 21:53, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 03.01.10 21:34 
Hallo und :welcome:

Für eine allgemeine Lösung hat Jason inzwischen den richtigen Hinweis gegeben. Sofern alles, was du machst, unter deiner Verantwortung läuft (als Programmierer und als Anwender), kannst du auch direkt Einfluss nehmen. Für diesen Fall setze ich meine Antwort dennoch ab.

Wenn du wirklich einen Thread hast, dann hast du ihn "irgendwo" gestartet. Dort kannst du dir eine Variable für diese Instanz merken und dafür Thread.Abort aufrufen.

Es kommt nun darauf an, wo der Thread erzeugt wurde. Wenn es ein Formular ist, dann kannst du mit KeyPreview und einem der Ereignisse KeyDown/KeyUp (vermutlich auch KeyPress) die F9-Taste abfragen und dort ggf. myThread.Abort aufrufen.

Wenn es nicht über ein Formular läuft, dann musst du genauere Informationen liefern.

Übrigens kapselt der BackgroundWorker einen Thread sehr gut und ist für einfache Hintergrundarbeiten hervorragend geeignet. Dafür ist auch die SDK-Doku/MSDN/Hilfe mit Hinweisen und Beispielen ausführlich genug.

Viel Erfolg! Jürgen
Sergeant Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 03.01.10 22:06 
Hey!

Ich bin der Anwender und der Programmierer in einem. Bestenfalls wird mein Bruder das Programm laufen lassen.

Nur mal zu Erklärung, was das Programm macht. Dabei möchte ich hinweisen, dass dies alles zu 100% legal ist.

Das Programm sammelt auf einer Seite Daten zu verschiedenen Aktien und speichert die einzelnen Punkte der jeweiligen Aktie pro Monat ab. Dazu kopiert die Seite den Inhalt der Website, also nur den Text, und zieht die benötigten Informationen heraus.
Dies lässt sich bestimmt noch einfacher realisieren als immer die Maus- und Tastatursteuerung zu übernehmen, ohne das man parallel dazu den PC für andere Zwecke nutzen kann. Aber wofür gibt es denn Nächte?

Diese Werte werden dann in einer Datenbank abgespeichert und von einer anderen Anwendung analysiert.

Nun soll spontan ein Abbruch des Threads erfolgen, der diese Daten einliest. Dies soll idealer Weise mit der Taste F9 passieren. Wichtig zu wissen ist dabei, dass der Browser zu diesem Zeitpunkt das aktive Fenster ist. Der Thread an sich funktioniert bereits, wobei ich mir auch nochmal den BackgroundWorker angucken werde.

--

Derzeit möchte ich JasonDelife's Rat umssetzen. Habe mir die ZIP(Version 2) runtergeladen von der Seite. Nun habe ich eine Frage: Wie krieg ich diese Daten in der ZIP soweit, dass ich sie per Drag n' Drop einfügen kann? Habe versucht über COM, WPF und .NET Framework-Komponenten die ZIP bzw den entpackten Inhalt einzufügen in die Toolbox oder als Referenz, aber es gibt darin nichts zum Einfügen.

Mag sein dass ich jetzt hier gerade den Vogel abschieße, aber so haben wir alle wenigstens ein leckeres Abendessen. Erklärts mir doch bitte. :)

UPDATE: Hab es ins Projekt eingefügt... jetzt ist mir ein Licht aufgegangen. Manchmal stell ich mich aber auch blöde an.


Gruß

Sergeant

PS: Welche Infos werden noch konkret benötigt?
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: So 03.01.10 22:37 
Hast du die DLL über die Toolbox / Elemente auswählen... / Reiter .NET / Durchsuchen... hinzugefügt?
Dann sollte die Komponente in der Toolbox erscheinen.

Grüße, JasonDelife.
Sergeant Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 03.01.10 22:45 
hab mal geguckt, da gibts keine DLL

habs trotzdem eingebunden bekommen
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: So 03.01.10 22:55 
Hast du den Sourcecode ins Projekt eingefügt? Geht, aber ist nicht so toll.
Normalerweise musst du nur die ZIP in einen Ordner den du wiederfindest und nicht löschst entpacken, das Projekt öffnen und einmal als Release erstellen. Dann kannst du die DLL in die Toolbox einbinden und sie immer wieder nutzen.

Grüße, JasonDelife.
Sergeant Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 03.01.10 23:00 
Ahaaaa!

Strahle gerade über beide Ohren.. und dann mit Weißheitszahnschmerzen... aber die Freude tut gut. Selten so ein Erfolgserlebnis gehabt. Hehe.

EDIT:

Habe jetzt alles so gemacht und es funktioniert wunderprächtig! Vielen vielen Dank!!! Ehrlich! Hab mich selten so gefreut wie jetzt(über eine IT-Lösung).