Zum Inhalt springen

TDM

Mitglieder
  • Gesamte Inhalte

    1804
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von TDM

  1. Da ist es dir ja früh eingefallen.
  2. Wenn da einfach nur ein alter (unsortierter) Index drin steht, iterier doch einfach die Tabellenzeilen und schreib den Index-Wert neu...
  3. Achso, dann wars ein Missverständnis meinerseits. :floet:
  4. Da du ja evtl. noch den Benutzernamen haben willst, hier die neuere Version: static void ReadProcessOnFile(string path) { string x = string.Empty; SelectQuery query = new SelectQuery("SELECT * FROM CIM_DataFile WHERE Name = '" + path + "'"); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { foreach (ManagementObject mo in searcher.Get()) { Dictionary<string, string> properties = new Dictionary<string,string>(); x = "File Name: " + mo.Properties["Name"].Value + "\nIs currently opened by:\n"; foreach (ManagementBaseObject b in mo.GetRelated("Win32_Process")) { properties = GetProcessProperties(b.ToString()); Dictionary<string, string>.KeyCollection keys = properties.Keys; foreach (string key in keys) { x += key + ":" + properties[key]+"\n"; } b.Dispose(); } } } Console.WriteLine(x); } static Dictionary<string, string> GetProcessProperties(string objectClass) { Dictionary<string, string> properties = new Dictionary<string, string>(); using (ManagementObject process = new ManagementObject(objectClass)) { process.Get(); Process p = Process.GetProcessById(Convert.ToInt32(process.Properties["ProcessID"].Value.ToString())); properties.Add("ProcessID", p.Id.ToString()); properties.Add("HandleCount", p.HandleCount.ToString()); properties.Add("HasExited", p.HasExited.ToString()); properties.Add("MachineName", p.MachineName); properties.Add("Owner", GetUserByProcess(p)); properties.Add("MainModule", p.MainModule.ToString()); properties.Add("MainWindowTitle", p.MainWindowTitle); properties.Add("PriorityBoostEnabled", p.PriorityBoostEnabled.ToString()); properties.Add("ProcessName", p.ProcessName); properties.Add("SessionId", p.SessionId.ToString()); } return properties; } static string GetUserByProcess(Process process) { string query = "Select * From Win32_Process Where ProcessID = " + process.Id; string ret = "none"; using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { ManagementObjectCollection processList = searcher.Get(); foreach (ManagementObject obj in processList) { string[] argList = new string[] { string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) ret = argList[0]; } } return ret; }
  5. Drucken unter C# - Das Blog über .NET, C# und mehr - Norbert Eder - Living .NET - 1st google hit
  6. Das ist für mich ungepuffert, da gepufferte Eingaben meines Wissens nach erst auf Enter warten und dann den String zur Längenüberprüfung zurückgeben. So oder so, such dir aus, was du machen willst: #include <stdlib.h> #include <conio.h> void scanf6(char* lp); void getch6(char* lp); int main(int argc, char* argv[]) { char lp[8]; char lp2[8]; printf("scanf6:"); scanf6(lp); printf("\n%s\n", lp); printf("getch6:"); getch6(lp2); printf("\n%s\n", lp2); return 0; } void scanf6(char* lp) { int i = 0; char *buffer = malloc(100*sizeof(char)); scanf("%s", buffer); do { lp[i] = buffer[i]; i++; }while(i < 6); free(buffer); buffer = NULL; lp[i] = '\0'; } void getch6(char* lp) { int i = 0; int buffer; while (i<6) { buffer = getch(); if (buffer == 0x0A) break; lp[i] = buffer; printf("%c", lp[i]); i++; } lp[i] = '\0'; }
  7. TDM

    Frage zu Schnittstellen

    Der Vorteil ist, dass wenn du z.B. in einer Funktion nur Schnittstellenfunktionen abrufst, dass du dann den Parameter als Schnittstellen-Objekt deklarierst. Dann brauchst du z.B. nicht die Klasse des Objektes zu kennen, sondern nur die Schnittstelle. Das einfachste Beispiel ist denk ich mal, wenn du eine Classe vom JFrame ableitest und gleichzeitig noch die Schnittstelle für die ActionPerforms implementierst. Ein anderes Beispiel ist z.B. wenn du generische Listen verwendest, da es in Java keine Mehrfachverbung gibt, kannst du so Objekte einer Klasse (,welche das Interface implementieren,) speichern.
  8. Na alles was drüber ist, wird doch eh verworfen. oder willst du eine ungepufferte Eingabe, bei der wirklich nur 6 Zeichen eingelesen werden können und dann, ohne einen Klick auf Enter, mit dem Programm fortgefahren wird?
  9. Du fügst in deine Oberfläche einen Member ein. Dieser ist vom Datentyp URLList. Du horchst auf das TextChangedEvent der TextBox für die URLs. Du holst den Text raus. Du validierst den Text. Du fügst einen neuen Eintrag hinzu. Du disablest/enablest die Buttons für vor und zurück mit der jeweiligen Methode. Du horchst auf die Buttons und führst bei einem Klick die entsprechende Funktion aus. Du trägst den Text neu in die Textbox ein. [Edit] Du liest ein Buch, wie man C#-Programme schreibt. :floet:
  10. grml Ich vermisse Feedback hier: http://forum.fachinformatiker.de/net/123235-c-auslesen-gerade-zugriff-dlls-hat.html Als Parameter einfach die Outlook.exe angeben.
  11. Wurde nicht getestet, ist nur einfach reingehämmert worden. Ich seh grad, dass das sehr viel ähnlichkeit mit dem hat: NavigationService-Member (System.Windows.Navigation) Irgendwann hab ich mein eignes MSDN-Framework geschrieben.
  12. Impuls: public class URLList { private int m_currentIndex=-1; private List<string> m_data = new List<string>(); public URLList() { addNewEntry(); currentIndex++; } public bool canGoForward() { return ((this.m_currentIndex + 1) < m_data.Count); } public bool canGoBackward() { return ((this.m_currentIndex - 1) > 0); } public void goForward() { if (canGoForward()) this.m_currentIndex++; } public void goBackward() { if (canGoBackward()) this.m_currentIndex--; } public string Text { set { if (this.m_currentIndex > 0 && this.m_currentIndex < m_data.Count) this.m_data[this.m_currentIndex] = value; } get { if (this.m_currentIndex > 0 && this.m_currentIndex < m_data.Count) return this.m_data[this.m_currentIndex]; return string.Empty; } } public void addNewEntry(string url) { this.m_data.Add(url); } public void addNewEntry() { addNewEntry(string.Empty); } }
  13. und wo ist da das problem?
  14. TDM

    C++ PictureBox Dispose

    Das klingt mehr nach mehrfacher Instanziierung. hmm Vielleicht hilft das ja: GC.Collect Method (System) GC.WaitForPendingFinalizers Method (System)
  15. hmm... Ich hab jetzt mal ein Bisschen mit der API bzw. WQL rumgespielt, Folgendes funktioniert soweit ganz gut: class Program { static void Main(string[] args) { ReadProcessOnFile(@"C:\\Program Files\\Mozilla Firefox\\firefox.exe"); } static void ReadProcessOnFile(string path) { string x = string.Empty; SelectQuery query = new SelectQuery("SELECT * FROM CIM_DataFile WHERE Name = '" + path + "'"); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { foreach (ManagementObject mo in searcher.Get()) { x = "File Name: " + mo.Properties["Name"].Value + "\nIs currently opened by:\n"; foreach (ManagementBaseObject b in mo.GetRelated("Win32_Process")) { string p = ShowProcessProperties(b.ToString()); b.Dispose(); x += p + "\n"; } } } Console.WriteLine(x); } static string ShowProcessProperties(string objectClass) { using (ManagementObject process = new ManagementObject(objectClass)) { process.Get(); PropertyDataCollection processProperties = process.Properties; string x = null; x = "ProcessID := " + processProperties["ProcessID"].Value + " Command Line = " + processProperties["CommandLine"].Value + "\n"; return x; } } } Kann man natürlich noch hübscher machen, aber zumindest bekomm ich alle Prozesse angezeigt, die die betreffende Datei verwenden.
  16. Überprüfen ob eine Datei geöffnet ist, ist ja einfach. Aber wer darauf zugreift ... hmm ... Ich denke das wird irgendeine Klasse in System.Diagnostics zeigen, welche - keine Ahnung. Ihr meint doch sicher sowas: Process Explorer
  17. Nö. Syntax ist ok, nur unsinnig ein leeres else zu haben. (btw: das fclose sollte ins Else mit rein.) weitere Anmerkung: Rückgabetyp von malloc zu casten ist nicht schön.
  18. Beep erwartet Zahlen, keine Strings. Variablendeklaration sollte innerhalb der Main erfolgen. #include <windows.h> #include <iostream> using namespace std; int main(int argc, char* argv[]) { int frequency, period; cout << "Frequenz:\t"; cin >> frequency; cout << endl; cout << "Dauer:\t"; cin >> period; Beep(frequency, period); cin.get(); return 0; } Anmerkung: Dev-C++ = böse.
  19. myTxt.Text += "weiterer Text"; :beagolisc
  20. TDM

    Arbeitszeitrechner

    COleDateTime::ParseDateTime (ATL/MFC) :beagolisc
  21. TDM

    C# Von Form1 zu Form2

    So?!
  22. TDM

    Batch

    Die Frage, die sich mir erstmal stellt - gibt es nur eine Datei im Verzeichnis? Bzw. enthält der Dateiname wirklich nur den Timestamp?
  23. Klingt irgendwie alles nach Googleübersetzung per Copy&Paste...
  24. http://forum.fachinformatiker.de/c-c/122667-c-2.html :floet:

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...