Thinklight von Miranda aus ansteuern?

Sunwalker

New member
Themenstarter
Registriert
29 Dez. 2007
Beiträge
62
Moin und ein frohes neues Jahr euch allen.

Ich würde mein Thinklight gerne blinken lassen, wenn ich eine neue Nachricht bei Miranda erhalte. Gibts dafür ein entsprechendes Plugin?
 
ihr führt aber schon
Code:
Rundll32.exe C:\Programme\Lenovo\PkgMgr\HOTKEY\virtfn_0.dll,ThinkLight
aus, richtig?


ansonsten könnt ich mir vorstellen das die Rundll32.exe verändert wurde. Am besten mal in der Kommandozeile die Parameter anschauen. bzw google fragen


wichtig natürlich den pfad der DLL abzuändern, bzw die DLL gleich ins Windows Verzeichnis kopieren. dann brauch man keine pfadangabe mehr, sondern nur noch den dateinamen.

sprich:

- DLL im windows verzeichnis:

Code:
Rundll32.exe virtfn_0.dll,ThinkLight
 
Hallo,

bei mir funktioniert das Thinklight unter Vista mit folgendem Aufruf aus der Kommandozeile:

rundll32.exe "C:\Program Files\Lenovo\HOTKEY\virtfn_0.dll" ThinkLight

Man beachte, dass ThinkLight NACH den Hochkommas stehen muss, sonst geschieht gar nichts!

Gruß

Carl
 
Original von Carl
rundll32.exe "C:\Program Files\Lenovo\HOTKEY\virtfn_0.dll" ThinkLight

schon klar, nur bei mir loest diese art des aufrufes nur dsa __ABschalten_ den thinklight hervor!! auch wenn ich den befehl mehrfach aufrufe ?( ... immer nur abschalten, abschalten, abschalten ... aber _ANschalten_ geht mit diesem befehl bei mir aufm T30 leida net :(
 
Habe heute auch schon die Plugin-Liste von Miranda durchwühlt.

Falls jemand eine Idee hat, bitte hier posten.

Miranda rules! :D
 
Original von gaku
Original von Carl
rundll32.exe "C:\Program Files\Lenovo\HOTKEY\virtfn_0.dll" ThinkLight

schon klar, nur bei mir loest diese art des aufrufes nur dsa __ABschalten_ den thinklight hervor!! auch wenn ich den befehl mehrfach aufrufe ?( ... immer nur abschalten, abschalten, abschalten ... aber _ANschalten_ geht mit diesem befehl bei mir aufm T30 leida net :(

Hallo gaku,

ich habe gerade im anderen Thread gelesen, dass es noch die Option
ThinkLightA gibt. Die macht bei mir genau das selbe: nämlich abwechselnd an und ausschalten. Vielleicht hilft diese Option bei dir ja wegen dem Problem


Gruß

Carl
 
so. hab das problem gefunden und behoben.


kurz gesagt: ich hab die lösung, es funktioniert !



schreibe grade noch n kleines programm. wenns fertig is mach ich meldung.
 
THiNKBLINK for MIRANDA

so, hier das ergebnis meiner recherchen und arbeiten.


nur eine bitte vorweg: ich hab es nur bei mir ausprobiert, also bitte sofort rückmeldung obs klappt oder nicht. evtl braucht ihr noch VB.Net dateien.

ansich wird das programm was ich geschrieben hab nur benötigt, um das licht mit einem zeitintervall an und aus zu machen, da das thinklight probleme macht wenn man ohne zeitabstand an/aus macht.


also is technisch jetzt nix großes, jeder der sich bisschen im programmiern auskennt wird schmunzeln beim code unten, aber es funktioniert. evtl wenn ich genug zeit hab versuch ich ma n komplettes plugin zu schreiben.

ansonsten erstmal lesen:

Code:
------------------------------------------
|  THINK-BLINK   for THINKPAD-FORUM.DE  by alroar
------------------------------------------

16.1.2008 - erste version - geschrieben  VB.Net mithilfe von lenovo's "virtfn_0.dll"

GETESTET UNTER:    Miranda 0.7.3;  WindowsXP SP2 aktuelle Patches



INSTALLATION
------------------------------------------
1. Die komplette .RAR Datei ins Miranda Verzeichnis entpacken. Dateien von "plugins" dürften dann automatisch im plugins ordner landen.
2. dann miranda starten bei den plugins schauen ob das "trigger" plugin läuft. dann unter "plugins" > "triggers"  auf den "IMPORT" Knopf drücken
3. dort dann die mitgelieferte "TriggerPlugin - THINKBLINK.XML" laden
4. ggf die aktionen bearbeiten




HINWEISE
---------------------------------------------
1. bei fragen hier schauen > [url]http://www.thinkpad-forum.de/thread.php?threadid=32253&threadview=0&hilight=&hilightuser=0&page=1[/url]
2. Trigger PLugin ist NICHT aktuell, wird nicht mehr fortgesetzt und ist bekannt probleme zu machen
3. falls nichts passiert, die mitgelieferte  "virtfn_0.dll" in den C:\Windows\System32  Ordner kopieren






Code:  (nich wundern, bin den weg des geringsten widerstands gegangen)
---------------------------------------------------------------------------
Public Class Thinklight

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Shell("C:\Windows\System32\Rundll32.exe virtfn_0.dll,ThinkLight")
    End Sub

    Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
        Shell("C:\Windows\System32\Rundll32.exe virtfn_0.dll,ThinkLight")
        End
    End Sub
End Class
----------------------------------------------------------------------------



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++ feel free to change, copy, distribute but keep my name in honor!         ++
++ -alroar                                                                                      ++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
super alroar vielen dank
wird heut abend gleich mal ausprobiert und rückmeldung erstattet^^
 
hier mal meine kleine Variante:
- in Delphi geschrieben
- inklusive komplett kommentiertem Code
- läuft ohne Fenster
- variable Blinkhäufigkeit
- variable An- und Auszeit des Thinklights
- dynamisches Verändern der An- und Auszeit im Schleifendurchgang möglich

Vielleicht mach ich noch ne Variante, die die Eingaben auch als Kommandozeilenparamter aktzeptiert...
 
Original von go4hl80ve
hier mal meine kleine Variante:
- in Delphi geschrieben
- inklusive komplett kommentiertem Code
- läuft ohne Fenster
- variable Blinkhäufigkeit
- variable An- und Auszeit des Thinklights
- dynamisches Verändern der An- und Auszeit im Schleifendurchgang möglich

Vielleicht mach ich noch ne Variante, die die Eingaben auch als Kommandozeilenparamter aktzeptiert...

vorsicht, wenn die dll nich im lenovo ordner liegt (so wie bei mir) kriegt man 10 fehlermeldungen :) evtl die dll mit reinpacken.

aber schön das sich endlich was tut hier :)
 
@alroar: Hab bisher nur deine Version ausprobiert. Leider blinkts nur einmal, obwohl in der Eventchain ja eingetragen zu sein scheint, dass es dreimal blinken soll (also dreimal die exe aufgerufen wird). Kann man das ändern?

Optimal würde ichs halt finden, wenn die LED ganz langsam blinkt, also sagen wir mal 2sek an, 2sek aus (oder auch nur alle 10sek einmal kurz aufblinken) und das so lange, bis die Nachricht gelesen wird, oder man die Maus bewegt.
 
@sunwalker:

hab die datei kurz nach dem einstellen nochma geändert. die thinklight wird direkt von der .exe an und aus gemacht.

evtl is da n kleiner denkfehler meinerseits im code. das zeite blinken hat keine verzögerung bevor das programm beendet wird. daher kanns da wieder zu verhakungen der dll kommen..


finde leider kein tut wie man miranda plugins schreibt, kann also noch bissl dauern.
 
Irgendwas bekomme ich nicht hin, habe die neueste Miranda Version und das Blinklight funktioniert auch wenn ich die Exe so starte.

Das TriggerPlugin ist drin und das Ereignis mit der Exe definiert.
Trotzdem passiert nichts? Einer eine Idee?

Nutze Vista
 
hier ist der Blinker "geMASMt".
Im wesentlichen ging es dabei nur darum:
a) ich kann WinAPI eher nur im Zusammenhang mit MASM ;)
b) man hat dern Vorteil, dass das ganze von keinlei Frameworks (NET/Java) oder anderen runtimes abhängt und daher recht schnell startet.

Nimmt Parameter entgegen:
thinklight_mail.exe <Anzahl> <Dauer> <m (optional)>
Anzahl: wie oft
Dauer: wie lange (in Millisekunden)

m=Mute: blinkt nur, wenn die Lautsprecher auf Stumm geschaltet sind. Deswegen wurde es überhaupt geschrieben (sonst hätte es auch eine CMD/BAT getan ;) ), denn solange die Lautsprecher an sind, werde ich über Sound informiert, erst wenn diese ausgemacht werden müssen, soll ThinkLight blinken. Da es aber Geschmackssache ist, ist dieser Parameter optional (wenn nichts angegeben, wird das Licht einfach ein- und aus gemacht). Wird das Programm ohne Parameter aufgerufen, so wird das Licht jeweils an/aus geschaltet. Die DLL virtfn_0.dll sollte in den Programmordner kopiert werden.

Bsp: thinklight_mail 2 100
blinkt 2 mal, jeweils für 100 ms
Bsp: thinklight_mail 3 1000 m
blinkt 3 mal für 1 sek, aber nur wenn Sound auf Stumm geschaltet wurde.
 
Hi CDW,

intressante Lösung. Hätte 2 Fragen an dich.

1. Gibt es einen bestimmten Grund dafür, dass du den Parameter "ThinkLightA" benutzt hast?

2. Wenn ich das richtig sehe, überprüfst du auch nicht vorher, ob das ThinkLight ein- oder ausgeschaltet ist, oder?


BuergerNB
 
Abend
1. Gibt es einen bestimmten Grund dafür, dass du den Parameter "ThinkLightA" benutzt hast?
Eigentlich nicht. Ich wollte einfach mal anders sein ;)
2. Wenn ich das richtig sehe, überprüfst du auch nicht vorher, ob das ThinkLight ein- oder ausgeschaltet ist, oder?
Wäre das mit der DLL überhaupt möglich? Hab das jedenfalls gerade verbessert - nun sollte der "Originalzustand" der Leuchte wiederhergestellt werden (habe den Anhang im vorherigen Post ausgetauscht).


Btw: die Funktion ThinkLight/A möchte 4 DWORD Parameter haben. Werden diese nicht übergeben, bekommt das Aufrufprogramm früher oder später Probleme.
 
Hi CDW,

Original von CDW
1. Gibt es einen bestimmten Grund dafür, dass du den Parameter "ThinkLightA" benutzt hast?
Eigentlich nicht. Ich wollte einfach mal anders sein ;)
auch gut. Ich dachte, du weißt vielleicht mehr als ich.:)

Original von CDW
2. Wenn ich das richtig sehe, überprüfst du auch nicht vorher, ob das ThinkLight ein- oder ausgeschaltet ist, oder?
Wäre das mit der DLL überhaupt möglich? Hab das jedenfalls gerade verbessert - nun sollte der "Originalzustand" der Leuchte wiederhergestellt werden (habe den Anhang im vorherigen Post ausgetauscht).
Irgendwie sollte es gehen, denn sonst wüßte ich nicht, wie die Onscreen-Funktion entscheidet, welches Zeichen gezeigt werden soll (also Symbole für ausgeschaltetes Thinklight oder angeschaltetes). Hab den Disassambler schon wieder runter geschmissen, kann also nicht mehr nach den genauen Namen/Bezeichnungen schauen.

Vielleicht kannst du ka, scheinst dich ja im Gegensatz zu mir mit Assembler auszukennen, etwas mehr aus der DLL lesen.


BuergerNB
 
Naja, die DLL schickt einfach einen Code an den Treiber ab
Code:
10001660   |.  6A 00                      PUSH 0                                                          ; /pOverlapped = NULL
10001662   |.  52                         PUSH EDX                                                        ; |pBytesReturned = ntdll.KiFastSystemCallRet
10001663   |.  8B15 88310010              MOV EDX,DWORD PTR DS:[10003188]                                 ; |
10001669   |.  8D4424 0C                  LEA EAX,DWORD PTR SS:[ESP+C]                                    ; |
1000166D   |.  884C24 0C                  MOV BYTE PTR SS:[ESP+C],CL                                      ; |
10001671   |.  6A 04                      PUSH 4                                                          ; |OutBufferSize = 4
10001673   |.  50                         PUSH EAX                                                        ; |OutBuffer = 00000001
10001674   |.  8D4C24 14                  LEA ECX,DWORD PTR SS:[ESP+14]                                   ; |
10001678   |.  6A 04                      PUSH 4                                                          ; |InBufferSize = 4
1000167A   |.  51                         PUSH ECX                                                        ; |InBuffer = kernel32.7C801694
1000167B   |.  68 2C810081                PUSH 8100812C                                                   ; |IoControlCode = 8100812C
10001680   |.  52                         PUSH EDX                                                        ; |hDevice = 7C91EB94
10001681   |.  C64424 26 00               MOV BYTE PTR SS:[ESP+26],0                                      ; |
10001686   |.  FF15 14200010              CALL DWORD PTR DS:[<&KERNEL32.DeviceIoControl>]                 ; \DeviceIoControl
und dann geht das Licht an und aus - dazu wird auch ein entsprechendes On-Screen Symbol gezeichnet. Wird irgendwo im Treiber (TPHKDRV) enschtieden und aufgerufen/gezeichnet. Habe leider weder einen Ring0 (Kernel) Debugger zur Hand noch genügend Erfahrung damit.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben