Zum Inhalt springen

David1993

Mitglieder
  • Gesamte Inhalte

    6
  • Benutzer seit

  • Letzter Besuch

Beiträge von David1993

  1. Verdammt. Habs grad selbst debuggt und gesehen, dass der "System" prozess mit der PID 4 das Problem auslöst. Auf die ID kann ich zugreifen, nicht aber auf attribute des mainmodules.

    Das Problem mit 32 und 64 bit habe ich, meines erachtens nach, schon gelöst. Hatte das problem in der anfangszeit und hab dann meinen dienst so kompiliert, dass er das schafft (x86/x64).

    Wenn ich dein "foreach (var p in Process.GetProcesses().Where(x=>x.StartInfo.UseShellExecute==false).ToList())" benutze, werden dann auch wirklich nur die pseudoprozesse geblockt oder können da auch noch andere prozesse geblockt werden, die nur anders gestartet werden?

    Hätte sonst die idee, alles unter PID 50 zu blocken, aber wenn deine zeile auch klappt, wäre das natürlich eleganter :)

    In der MSDN Doku steht weiter unten folgender Hinweis:

    Ein Prozessmodul stellt eine DLL- oder EXE-Datei dar, die in einen bestimmten Prozess geladen wird. Die MainModule-Eigenschaft ermöglicht das Anzeigen von Informationen über die zum Starten des Prozesses verwendete ausführbare Datei, einschließlich des Modulnamens, des Dateinamens und der Informationen über den Modulspeicher.

    Hinweis zu : Diese Eigenschaft ist auf dieser Plattform nicht verfügbar, wenn beim Starten des Prozesses ProcessStartInfo.UseShellExecute auf true festgelegt ist.

    Damit müsste es meiner Meinung nach funktionieren. Teste es am Besten aus.

  2. Das ist eine Erklärung.

    Eine andere wäre, dass ein 32 Bit Prozess versucht auf einem 64 Bit Prozess zuzugreifen.

    Schau dir den Punkt "Ausnahmen" an. Dort findest du die Erklärung, warum dort eine Win32Exception geworfen wird.

    Process.MainModule-Eigenschaft (System.Diagnostics)

    1. Lösungsvorschlag: Umfasse den Abruf mit einem try-catch und logge, wenn ein Prozess nicht abgerufen werden konnte.

    2. Lösungsvorschlag: Du rufst nur die Prozesse ab, die keine "Pseudoprozesse" sind, mit:

    
    foreach (var p in Process.GetProcesses().Where(x=>x.StartInfo.UseShellExecute==false).ToList())
    
    {
    
    ...
    
    }

  3. Hallo,

    es ist möglich, solange man Zahlen, die zwischen dem Minimum und Maximum liegen, schreiben möchte.

    public partial class Form1 : Form
    
        {
    
            public Form1()
    
            {
    
                InitializeComponent();
    
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
    
            {
    
                this.numericUpDown1.Minimum = 0;
    
                this.numericUpDown1.Maximum = 100;
    
            }
    
    
            public void MeineMethode()
    
            {
    
                // Sperre das Control
    
                this.numericUpDown1.Enabled = false;
    
    
                // Lese den aktuellen Wert aus
    
                decimal aktuellerWert = this.numericUpDown1.Value;
    
    
                // Schreibe einen anderen Wert zur Laufzeit in die Value Eigenschaft
    
                this.numericUpDown1.Value = 80;     // Neuer Wert muss >= Minimum und <= Maximum sein
    
    
                // Entsperre das Control
    
                this.numericUpDown1.Enabled = true;
    
            }
    
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                this.MeineMethode();
    
            }
    
        }

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...