Hallo, ganz einfaches Problem,
nur finde ich die Lösung nicht.
Möchte gerne den PC Sperren (Windowstaste + L)
CODE:
System.Diagnostics.Process.Start(@"C:\WINDOWS\system32\rundll32.exe user32.dll,LockWorkStation");
Kommt beim anfrufen jedoch Fehlermeldung "Datei nicht gefunden"
Liegt es am "System.Diagnostics.Process.Start" ?
Schöne Grüße
👶-> :]-> 8o-> 🙂
das liegt daran dass die datei nicht gefunden wurde...
versuch mal anführungsstriche um den pfad von rundll.exe zu setzten.
Hallo RPlaner,
wird eine Exception geworfen? Oder wird eine Fehlermeldung von rundll32.exe angezeigt?
Was passiert, wenn du das ganze per Start-Ausführen ausführst?
Zum Sperren des PCs solltest du lieber die WinAPI nutzen: http://www.pinvoke.net/default.aspx/user32.LockWorkStation
Ansonsten ist auch der hardgecodete Pfad zum Windows-Verzeichnis nicht gerade ellegant.
Guck dir mal an, welche Konstruktor du verwendest und welche Möglichkeiten es gibt 🙂 Dann, denke ich, wirst du die Lösung selbst finden 😉
lg Lion
lg Lion
Hallo, also vorweg möchte ich API gerne NICHT nutzen. (Systembedingt)
Es kommt eine direkte Ausnahmemeldung beim Klicken auf den Button.
("Datei nicht gefunden")
Konstruktor hab ich mir angeschaut, leider komme ich nicht selber drauf, sonst hätte ich hier nich gepostet 😉
👶-> :]-> 8o-> 🙂
wäre euch / dir sehr verbunden wenn eine Code-Lösung gepostet wird, danke !
[edit]
kleiner hinweis:
der Pfad , den du mit dem oberen Befehl ausrufst sähe im moment folgendermaßen aus :"C:\WINDOWS\system32\rundll32.exe user32.dll,LockWorkStation"
sollte der befehl nicht eher so aussehen:
System.Diagnostics.Process.Start(@"C:\WINDOWS\system32\rundll32.exe", user32.dll,LockWorkStation);
! REINE VERMUTUNG !
Also die API Lösung funktioniert.
Werde mal weiter googeln 🙂
@Dexter: Habe ich auch schon probiert. Gleicher Fehler
👶-> :]-> 8o-> 🙂
hallo Dexter323,
deine vermutung war richtig, du hast aber die anführungszeichen vergessen =)
Process.Start("rundll32.exe", "user32.dll, LockWorkStation");
Hier was gutes:
ProcessStartInfo proc = new ProcessStartInfo();
proc.FileName = "cmd";
proc.WindowStyle = ProcessWindowStyle.Hidden;
proc.Arguments = "/C shutdown " + param;
Process.Start(proc);
"Param" enthält hier die Parameter was passieren soll:
also z.B. Herunterfahren, Neustarten ...
Suche grad noch die Parameter zum sperren
👶-> :]-> 8o-> 🙂
danke feadur,
wie gesagt war nu spekuliert^^.... aber fast richtig =)
Konstruktor hab ich mir angeschaut, leider komme ich nicht selber drauf, sonst hätte ich hier nich gepostet
Dann Tippe mal:
System.Diagnostics.Process.Start(
Und drücke mit den Pfeiltasten rauf und runter.. dann wirst du sehen, dass es ene Überladung gibt, welche lautet (string filename, string parameters). Dann hätte dir wohl klar sein müssen, dass Parameter wohl, wie erwähnt, extra übergeben werden 😉
Sorry, aber das hätte man mit F1 lösen können 😉 Aber jetzt hast du es ja.
lg Lion
lg Lion
Hallo,
ich würd das ganze nicht über das starten eines Prozesses machen, sondern mittels P/Invoke:
using System;
using System.Runtime.InteropServices;
public class Locker
{
[DllImport( "user32.dll" )]
public static extern void LockWorkStation();
public static void Main()
{
LockWorkStation();
}
}
Ist imho wesentlich eleganter.
Grüsse,
Egon
egrath's Blog: http://egonrath.eg.funpic.de/wordpress