Einfach Googlen: http://bit.ly/MHQZUw
war das so schwer ???
Einfach Googlen: http://bit.ly/MHQZUw
war das so schwer ???
GetForegroundWindow und anschließend GetWindowText.
http://www.vbarchiv.net/api/api_createtoolhelp32snapshot.html
Darauf kannst Du aufbauen. Denke bitte daran, daß der SnapShot auch immer wieder danach freigegeben werden muß.
Vorgehensweise:
In einem Timerereignis das Ganze wiederholen und die Prozessnamen beider Abfragen vergleichen.
Die Verwendung eines Timers ist allerdings nicht die beste Methode. Besser wäre die Verwendung eines Hooks. Wie das vom Prinzip her funktioniert, siehst Du im nächsten Link:
Aber dazu solltest Du auf eine andere Programmiersprache umsteigen (C++ oder Delphi). Visual Basic ist einfach nur Murks.
Die API braucht man nicht selbst aufrufen, wenn man .Net nutzt. Das gibt es alles in der Process-Klasse, ohne dass man sich um Freigaben kümmern muss. Das erledigt schließlich alles die Process-Klasse des Frameworks.
Wieso sollte ein Timer keine gute Möglichkeit sein? Der TaskManager oder ProcessExplorer machen das ebenfalls so.
Statt aktiv zu pollen, lässt man sich einfach benachrichtigen. Das ist doch viel eleganter.
Es gibt eine Process-Klasse, die eine Methode anbietet um alle laufenden Prozesse zu ermitteln. Mittels eines Timers, dem du ein bestimmtes Intervall vorgibst (wie oft also die Liste aktualisiert werden soll), kannst du auf Änderungen reagieren. Dazu holst du dir also alle laufenden Prozesse, speicherst sie in einer Variable. Im nächsten Schritt vergleichst du die aktuelle Liste mit der gespeicherten und vergleichst, ob ein neues Prozess hinzugekommen ist oder beendet wurde.
Je nachdem kannst du einen Text in einer TextBox anzeigen lassen.
Wie speichere ich die aktuellen Prozesse in einer Variable???
(BIN NOCH ANFÄNGER)
Klar könnte ich dir den Code geben. Du schriebst aber selbst, dass du Anfänger bist. Du würdest dann damit wahrscheinlich sowieso nichts anfangen können. Schlichtes Übernehmen von Code hilft nicht beim Lernen. Du solltest dich lieber mit den Grundlagen beschäftigen, wenn du Anfänger bist. Das gehört sich so, wenn man etwas machen will: man muss es lernen!
Zur Theorie:
Erstelle einen Timer und klicke doppelt darauf, um das Tick-Ereignis zu behandeln. Auf Klassenebene erstellst du eine Variable "Private tempList As List(Of Process)", das ist also die Auflistung.
Im Tick-Ereignis iterierst du durch alle vorhandenen Prozesse, fügst dieser einer neuen Liste hinzu (z.B. currentList). Anschließend vergleichst du beide Listen, also tempList und currentList miteinander. Darauf aufbauen kannst du dann ermitteln, ob ein aktueller Prozess neu dazugekommen ist, oder ob einer der Prozesse in der Auflistung fehlt. Am Ende kommt dann noch eine Zeile mit "tempList = currentList".
Wie man alle Prozesse ermittelt findest du hier: http://msdn.microsoft.com/de-de/library/1f3ys1f9.aspx
Das versteh ich alles nich?!? :(
Dann wirst du wohl folgenden Code auch nicht verstehen:
Private previousList As List(Of String)
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim currentList As New List(Of String)
' Durch alle laufenden Prozesse iterieren
' und der Liste hinzufügen
For Each p In Process.GetProcesses
currentList.Add(p.ProcessName)
Next
If previousList IsNot Nothing Then
' Vergleiche, ob ein Prozess in der vorigen Liste vorhanden ist,
' in der aktuellen Liste aber nicht mehr. Das heißt, dass der
' Prozess beendet wurde.
For Each processName In previousList
If Not currentList.Contains(processName) Then
RichTextBox1.AppendText(processName & " wurde beendet." & vbCrLf)
End If
Next
' Vergleiche, ob ein Prozess in der aktuellen Liste vorhanden ist,
' in der vorigen Liste aber nicht mehr. Das heißt, dass der
' Prozess gestartet wurde.
For Each processName In currentList
If Not previousList.Contains(processName) Then
RichTextBox1.AppendText(processName & " wurde gestartet." & vbCrLf)
End If
Next
End If
previousList = currentList
End Sub
Der Code ist nur sehr einfach und erfüllt vermutlich nicht all deine Anforderungen. Beispielsweise wird nicht erkannt, ob der gleiche Prozess mehrmals gestartet/beendet wurde. Das kann auf jeden Fall noch optimieren.
Ich gibs auf!!!!!!
Tschau!
ICH NEHM ALLES ZURÜCK ICH HABS GESCHAFFT!!!!!!
DAAANNNKKKKEEEEE!!!!!!!!!!!!!!!!!!!!!!
Oder kannst du mir vielleicht einen Code geben?
Schau mal, ob Dir dies weiterhilft: http://www.vb-paradise.de/programmieren/hauptforum/55953-prozess-ueberwachen/
Hilft mir irgendwie auch nicht weiter!
Ich will das ein Text in der Textbox hinzugefügt wird wenn irgendein Prozess startet! Also das heißt ich will alle Programme überwachen!
Der von dir eingebaute WMP ist wahrschenilich eine eigene Klasse, oder?
Die Klasse wird doch bestimmt eine Eigeschaft á la "currentSong" (o.ä. ist ja nur ein bsp.) haben. Ansonsten wäre es einfacher wenn du uns auch Programmcode zur verfügung stellen würdest. :)
P.S.: Wenn dir hier keiner helfen kann guck mal auf http://www.stackoverflow.com da treiben sich mehr Programmierer rum ;)
Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click AxWindowsMediaPlayer1.URL = "LINK ZUM STREAM" Label3.Text = Hier soll der Code zu Auslesen des Titels hin
hab ein Code mal versucht aber dann steht da nur Media_House Aber ich will ja Titel und Interpret ^^
Autsch. :P Bitte benutze doch die Formatierung für Programmcode (4 Leerzeichen vor der Zeile, Strg+k oder das Symbol "<>" mit dem Blatt dahinter). ;)
Ich selber bin kein VB Programmierer, aber ich hab mich mal bei google umgesehen und das hier gefunden, das scheint fast genau dein Problem zu sein und der hat schon Lösungen die er probiert hat in der Frage die bei dir evtl. sogar funktionieren:
http://social.msdn.microsoft.com/Forums/en-HK/vblanguage/thread/2f79047c-e60c-43bd-b0a3-18a870a855a2
Werte die Windowsbotschaft WM_DeviceChange aus.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363480(v=vs.85).aspx
Beispiel für Visual Basic:
http://bytes.com/topic/visual-basic-net/answers/599857-wm_devicechange
Process.Start("excel.exe", "C:\Pfad\zur\Datei\ExcelSheet.xlsx") So wäre die VB.NET Syntax.
Vielen Dank für die rasche Antwort. Leider nicht ganz verwendbar, Habe aber nun nach ewigem Suchen eine ganz verrückte Lösung gefunden:
Das vielleicht nicht klar beschriebene Problem bei mir ist, dass ich die einzelnen Daten als Variable übergeben muss.
Programm = "Excel.xls" Pfad = currentproject.path & "\" Datei = "Anwenderdatei.xls"
stAppName = Programm & Pfad & Datei
Funktioniert auch wenn nicht im Pfad ein Pfad mit "Blank (z.B. "Dokumente und Einstellungen") enthalten ist. Ist aber ein Blank im Pfad enthalten wird nur bis zum Blank als Programm übergeben (Fehlermeldung bei Excel "Datei c:\Dokumente.XLS nicht gefunden")
Habe nun einen Hinweis (wie gesagt fast verrückt) im Internet gefunden welcher aber einwandfrei funktionierte:
stAppName = Programm & Chr(34) & Chr(34) & Chr(34) & pfad & Datei & Chr(34) & Chr(34) & Chr(34)
space ist eine "normale" taste.
ich würde die "Umschaltung" über ctrl, shift, oder alt machen
dazu den Keystate abfragen
Deklariere eine Boolean Variable dafür, setze die entsprechend wenn jemand Space drückt, prüfe sie bei den anderen Tasten zusätzlich ...
Wenn dir das nicht weiterhilft: zeig deinen Code.
Ok so ganz verstehe ich das nicht hier mal der code für Right:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Windows.Forms.Keys.Right Then
If rl = 0 Then
PictureBox1.BackgroundImage = My.Resources.Rechteansicht
rl = 1
PictureBox1.Location = New Point(
PictureBox1.Location.X + 10,
PictureBox1.Location.Y)
Else
PictureBox1.BackgroundImage = My.Resources.r_rechterfuß
rl = 0
PictureBox1.Location = New Point(
PictureBox1.Location.X + 10,
PictureBox1.Location.Y)
End If
So und nun will ich das wenn ich Space drücke dieser Code nicht mehr im Programm funktioniert also wie ein Timer abgeschaltet wird.
irgendwo außerhalb
Private Boolean _spacePressed = False
dann
If e.KeyCode = [foo .. Space] Then _spacePressed = True
und irgendwo an passender Stelle
If _spacePressed Then Return
Heyyy super danke hat geklappt :)
Sicher. Mach dir nen boolean für dein Space, prüfe in der Bewegungsmethode ob der boolean true/false ist, und reagiere dementsprechend darauf.
Oh sorry hab selbst die Lösung gefunden
Example.)
If RadioButton1.Checked And CheckBox1.Checked = True Then BooksPictureBox.Visible = True MusicPictureBox.Visible = False PeriodicalsPictureBox.Visible = False CoffeeBarPictureBox.Visible = False
Das ist aber umständlich gelöst. Die Auswertung der If-Anweisung ist bereits ein Boolean, den du auch direkt zum Zuweisen der Werte verwenden kannst.
Dim flag As Boolean
flag = RadioButton1.Checked AndAlso CheckBox1.Checked
BooksPictureBox.Visible = flag
MusicPictureBox.Visible = Not flag
PeriodicalsPictureBox.Visible = Not flag
CoffeeBarPictureBox.Visible = Not flag
Eine Möglichkeit wäre mittels der Random-Klasse eine zufällige Ziffer (0-9) zu erstellen und innerhalb einer Schleife den Vorgang 18mal wiederholen. Die zufällige Ziffer jeweils mit der Text.StringBuilder Klasse oder den String-Methoden anfügen.
Ööööhm
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim rnd As New Random
Dim result As String = String.Empty
For i As Integer = 0 To 18
result &= rnd.Next(0, 10).ToString
Next
TextBox1.Text = result
End Sub
Na, das war doch klar, dass DU das schon wieder bist, der hier geantwortet hat.
Pah, lässt mir nichts mehr übrig, was bist du gemein! ;-) Aber nein, nur ein Spaß, habe dir ja schon etwas dazu geschrieben.
Na einer musste es ja tun. Obwohl ich mit der Kommentar "Ööööhm" nicht viel anfangen konnte. Vielleicht kann er dafür mit dem Code mehr anfangen.
In der Tat :)
Hervorragend.
Hallo,
das geht und ist nicht schwer... jedoch wirst du um ein Buch nicht drumrum kommen.
Schau mal in der gut sortierten Buchhandlung (je dicker das Buch, desto besser)...dort kannst du erstmal schauen ob deine Themen behandelt werden.
Am besten programmierst du das Spiel erstmal "normal", dann hast du schonmal eine Grundlage.
Viel Erfolg
Nicky
Welcher Browser?
Wenn du das WebBrowser-Control meinst, dann wirst du wohl das DocumentCompleted-Ereignis verwenden müssen. Darin kannst du einfach erneut die geladene Webseite mit der Navigate-Methode aufrufen lassen.
nene des macht man normalerweise mit rectangles:
**if new rectangle(label1.left, label1.top, label1.width, label1.height).intersects(label2.left, label2.top, label2.width, label2.height) then
end if**
Hey erd21,
Weist du denn, wie du denen deine Updates zu senden willst?
Da du bei Amazon Programme sowie MP3 Lieder schon downloaden kannst ( gegen Bezahlung, würde ich dir raten dich da auch schlau zu machen )
Sonst eine eigene Homepage gestallten, und es da zum download anbieten... Via Paypal kann man dann einfach zahlen.. Jedoch wirst du da das Problem haben, dass deine Seite erstmal bekannt werden muss..
Zum Urheberrecht
Aus deiner Frage stelle ich fest, dass du der Entwickler des Spiels bist. Daher hast NUR DU das Urheberrecht.
Hoffe konnte helfen
Gruß
Avialos
Was st das denn für ein Spiel !!?? XD
Es ist ein Spiel bei dem man mit einem Hammer einen sich bewegenden Kreis Hauen muss. Man kann sich Erweiterungen und Verzauberungen sowie hintergründe und mehr Gegner für Punkte kaufen. Das Bild im Kreis sowie die Schnelligkeit des Kreises kann man Verändern. Wird noch viel mehr geben, wie zum Beispiel Medaillen Mehrspieler und so weiter. Hat man das Spiel gekauft bekommt man einen Code. Beim Update des Spiels muss man diesen immer eingeben. Das Spiel kostet so maximal 1,99€.
Na supi! Ein sich bewegender Kreis, den man behämmern muss. Und du glaubst wirklich, da wird jemand nur einen Cent für ausgeben wollen? Verstehe das nicht falsch, ich möchte dich nicht blöd anmachen. Aber letztendlich war ich da auch mal so naiv wie du, und meinte, die Leute würden jeden Mist kaufen. Dem ist aber nicht so. Manches will man noch nicht mal haben, wenn man es geschenkt bekäme. Und ich vermute mal vorsichtig, das wird so ein Fall sein.
Caramba, die Zeit reichte nicht mehr.
Versuche es doch in einer anderen Umgebung, und zwar für die mobile Telefonwelt. Hier ist der Anspruch, was Grafik betrifft, nicht ganz so hoch, es kommt mehr auf den Spaßfaktor an. Hier kann ich mir vorstellen, könntest du, wenn auch eher mäßig, einen Absatz finden.
Und wie muss ich das schreiben???
Ich muss es in einen Timer schreiben oder???