Benutzer mit den meisten Antworten
Aktiv/Inaktiv

Frage
-
Hallo
Ich möchte machen, dass der Status(msn) auf beschäftigt geht wenn das Messenger Fenster und die WA inaktiv ist.
Mein Code:
Imports MessengerAPI Public Class Form1 Dim msn As New MessengerAPI.Messenger Sub Inaktiv() msn.MyStatus = busy Wait to me.Status = aktiv Then aktiv() End Sub Sub aktiv() msn.MyStatus = Online End Sub Sub Timer1.Tick() If me.status = inaktiv for x sekunden Then inaktiv() End Sub End Class
Also dieser Code funktioniert nicht, aber ich möchte einen Code der ungefär das selbe kann.
LG Yves Riedener
Antworten
-
Hallo zusammen,
Ich verstehe das so: wenn die Anwendung und das Windows Live Messenger nicht die Aktive Fenster sind dann soll Windows Live Messenger auf „Busy“ springen. Wenn eines von den Beiden Fenstern jedoch aktiv ist dann passiert nichts.
@Yves: Kannst Du ein bisschen "Licht" machen?Imports System.Runtime.InteropServices Imports System.Text Imports MessengerAPI Public Class Form1 <DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> _ Public Shared Function GetForegroundWindow() As IntPtr End Function <DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)> _ Public Shared Function GetWindowText(ByVal hWnd As IntPtr, <Out(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer End Function Dim myMSN As New MessengerAPI.Messenger Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If GetActiveWindowTitle() = "Form1" Or GetActiveWindowTitle() = "Windows Live Messenger" Then '//Nichts machen Else myMSN.MyStatus = MISTATUS.MISTATUS_BUSY End If '//MsgBox(GetActiveWindowTitle) End Sub Private Function GetActiveWindowTitle() As String Const nChars As Integer = 256 Dim handle As IntPtr = IntPtr.Zero Dim Buff As New StringBuilder(nChars) handle = GetForegroundWindow() If GetWindowText(handle, Buff, nChars) > 0 Then Return Buff.ToString() End If Return Nothing End Function End Class
Grüße,Robert
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 18. März 2010 12:44 war: die Anwendung oder das Windows Live Messenger
- Als Antwort markiert Yves Riedener Donnerstag, 18. März 2010 15:52
Alle Antworten
-
Hallo Yves,
und ich verstehe Deinen Code nicht.
Das To-Schlüsselwort kann in den folgenden Kontexten verwendet werden:Select...Case-Anweisung
Gruß
Ellen
please, mark this as answer if it is THE answer -- best regards Ellen -
Hallo Ellen,
um sein Ansinnen zu verstehen, und eine Lösung zu präsentieren,
müsste man sich mit dem Messenger API auseinander setzen.
Eine (englische) Anlaufstelle: http://dev.live.com/messenger/
Gruß Elmar -
Hallo Yves,
Du kannst prüfen ob das Fenster in „Away“ Status ist und auf „Busy“ schalten wie zum Beispiel:
Imports MessengerAPI Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myMSN As New MessengerAPI.Messenger If myMSN.MyStatus = MISTATUS.MISTATUS_AWAY Then myMSN.MyStatus = MISTATUS.MISTATUS_BUSY End If End Sub End Class
-> Options -> Personal -> Status -> Häkchen auf „Show me as „Away“ when I’m inactive for x Minutes“)
Weil „Away“ bedeutet ja „Inactive“ für x Minuten (die Einstellung findest Du in Windows Live Messenger unter Menü ToolsGrüße,
Robert
-
Hallo Ellen,
Für mich scheinte es so eine „Art“ Pseudocode zu sein aber es ist eine Mischung zwischen Yves Logik (was er machen möchte) und VisualBasic.NET. Wenn ich das noch einmal nachschau sehe ich er möchte das machen wenn die WA (WindowsAnwendung ?) „inaktiv“ ist.
Grüße,
Robert
-
Hallo Ellen,
das ist einfach nur Pseudocode, der veranschaulichen soll, was erreicht werden sollte. Allerdings ist dieser Pseudocode so geschrieben, dass man das leider trotzdem nicht wirklich versteht.
Hannes
If you have got questions about this, just ask.
Mark the thread as answered if the answer helps you. This helps others who have the same problem !
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Hallo Robert und Hannes,
alles klar. Dann bin ich ja beruhigt.
Ich habe das einem Kollegen gezeigt und mit ihm eine Viertelstunde diskutiert.
Wir konnen uns keinen Reim draus machen. Mein Kollege programmiert in
c# und ist schon einiges weiter als ich.
danke und schöne Grüße
Ellen
please, mark this as answer if it is THE answer -- best regards Ellen -
Hallo zusammen,
Ich verstehe das so: wenn die Anwendung und das Windows Live Messenger nicht die Aktive Fenster sind dann soll Windows Live Messenger auf „Busy“ springen. Wenn eines von den Beiden Fenstern jedoch aktiv ist dann passiert nichts.
@Yves: Kannst Du ein bisschen "Licht" machen?Imports System.Runtime.InteropServices Imports System.Text Imports MessengerAPI Public Class Form1 <DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> _ Public Shared Function GetForegroundWindow() As IntPtr End Function <DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)> _ Public Shared Function GetWindowText(ByVal hWnd As IntPtr, <Out(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer End Function Dim myMSN As New MessengerAPI.Messenger Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If GetActiveWindowTitle() = "Form1" Or GetActiveWindowTitle() = "Windows Live Messenger" Then '//Nichts machen Else myMSN.MyStatus = MISTATUS.MISTATUS_BUSY End If '//MsgBox(GetActiveWindowTitle) End Sub Private Function GetActiveWindowTitle() As String Const nChars As Integer = 256 Dim handle As IntPtr = IntPtr.Zero Dim Buff As New StringBuilder(nChars) handle = GetForegroundWindow() If GetWindowText(handle, Buff, nChars) > 0 Then Return Buff.ToString() End If Return Nothing End Function End Class
Grüße,Robert
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 18. März 2010 12:44 war: die Anwendung oder das Windows Live Messenger
- Als Antwort markiert Yves Riedener Donnerstag, 18. März 2010 15:52