Laden...

Forenbeiträge von james~ Ingesamt 18 Beiträge

13.01.2016 - 19:00 Uhr

Hey,
Weiss jemand warum die beiden Codes unterschiedliche Ergebnisse produzieren? Es scheint so, als ob die anforderungsliste ab dem zweiten User nicht mehr von vorne durchlaufen werden würde, wenn man den 1ten Codeschnipsel nutzt.

            foreach (User s in userliste)
            {
                BestSkill bs = calcBestSkill(s.getskills(), anforderungsliste);
                MessageBox.Show(s.ToString()+" - "+bs.ToString());
            }

Initialisiere ich BestSkills jedoch ausserhalb der Schleife, habe ich das gewünschte Verhalten.

            BestSkill bs;
            foreach (User s in userliste)
            {
                bs = calcBestSkill(s.getskills(), anforderungsliste);
                MessageBox.Show(s.ToString()+" - "+bs.ToString());
            }

Warum macht das einen Unterschied?

11.01.2016 - 20:58 Uhr

inzwischen funktioniert der code, den herbi ins spiel gebracht hat, nicht mehr. das resultat ist ein schwarzes bild..

dafür geht der alte aus meinem ersten beitrag wieder.

ich kann das wirklich schwer nachvollziehen. hat jemand eine idee, warum sich das verhalten ändert? könnte es an unterschiedlichen betriebssystemen liegen (benutze inzwischen win10, vorher vista / 7)?

/edit
falls es jemanden interessiert, ich hab es soeben getestet: das verhalten ist tatsächlich von betriebssystem zu betriebssystem unterschiedlich...

hat jemand eine idee, wie ich das betriebssystemunabhängig hinbekomme?

03.01.2016 - 18:02 Uhr

ich hatte tatsächlich new benutzt.. :{ hatte aber keinen tieferen sinn, ich hatte eine fehlermeldung des compiler irgendwie missverstanden und dann auf new geändert

02.01.2016 - 13:26 Uhr

danke schoma

ich muss die dinger zur laufzeit casten um auf ihre (überschriebene) funktionen zugreifen zu können

31.12.2015 - 11:44 Uhr

Hey,
ich erstelle zur Laufzeit ein Objekt z.B. "geometrische Figur", weiss jedoch nicht von welcher Subklasse es ist z.B. ("Rechteck", "Dreieck" ..).

wie bringe ich das nun in Erfahrung ohne einfach alles durchzucasten was in Frage kommt? Soll ich die Information dazu in der Mutterklasse speichern oder ist das redundant und ich kann die Info irgendwie abfragen?

01.09.2014 - 12:39 Uhr

danke herbi.

der code

RECT rect = new RECT();
            GetWindowRect(hWnd, ref rect);
            int width = rect.right - rect.left;
            int height = rect.bottom - rect.top;
            Bitmap screenshot = new Bitmap(width,height);
            Graphics g = Graphics.FromImage(screenshot);
            IntPtr hdc = g.GetHdc();
            PrintWindow(hWnd, hdc, 0);
            g.ReleaseHdc(hdc);

funktioniert einwandfrei und ist zudem um ein vielfaches schlanker.

31.08.2014 - 22:22 Uhr

gleiches problem.. alles was das geshottete fenster überlappt kommt mit auf den screenshot

31.08.2014 - 12:16 Uhr

danke schonmal.

also das einzige was ich geändert habe, ist die klasse static zu machen. ich habe testweise wieder den originalcode 1:1 eingebunden, aber das problem bleibt bestehen... irgendwas MUSS sich geändert haben, früher ging es. es werden ja auch diverse fremd-dlls eingebunden...

habe nun ein workaround programmiert und hole das benötigte fenster kurz in den Vordergrund .. ist aber alles andere als elegant, langsam und fehleranfällig.

wäre daher nach wie vor an einer sauberen lösung interessiert...

30.08.2014 - 11:46 Uhr

ich möchte screenshots von fremden fenstern machen, die z.T. nicht sichtbar sind (aber auch nicht minimiert.. einfach überlappt). das handle auf das jeweilige fenster steht zur verfügung.
bisher habe ich diesen fremdcode verwendet: Capture a Screen Shot

das hat bis vor einiger zeit auch wunderbar funktioniert. als ich nun nach einigen monaten pause das programm wieder benutzen wollte, gab es jedoch ein problem: es werden nicht länger die screenshots der fremden fenster gemacht, sondern von dem bereich, in dem sie sich befinden.. also alles was sie überlappt wird nicht länger herausgefiltert.

hat sich irgendwas in der .NET klasse geändert?
hat jemand eine idee, wie ich es wieder schaffe, saubere screenshots von den fenstern im hintergrund zu bekommen?

gruß

07.02.2014 - 13:31 Uhr

wie bekomme ich es mit wcf hin, dass der client auch empfangen kann? muss ich für ihn auch ein extra server bauen oder geht das eleganter? oder besser gar nicht erst mit wcf?

01.12.2012 - 17:43 Uhr

danke für den hinweis mit der fehlermeldung, werde ich in zukunft beherzigen.

zu deiner frage: nein, das war nicht der ganze code, hab den einfach so aus dem kopf geschrieben.

also nochmal ruhig und von vorne 😉

-

ich habe hier einen langen text wegeditiert, da das beschrieben verhalten nicht immer zutraf.
das seltsame ist, dass manchmal der code funktioniert und auf P.Handle zugegriffen werden kann, meistens aber nicht. P.Processname ist immer verfügbar.

wenn jemand weiss warum es manchmal verfügbar ist und manchmal nicht (undabhängig davon ob ich mit admin privilegien starte oder nicht), immer her damit.

01.12.2012 - 12:49 Uhr

sorry wenn ich irgendwas übersehen habe, aber mir ist nicht ganz klar was ich im hinblick auf den "wie poste ich richtig" leitfaden missachtet habe?

davor habe ich die aufgabe nicht in einem thread, sondern im hauptprogramm ausgeführt.

änderung des ApartmentState zu MTA oder STA hat nichts gebracht.

fehlermeldung ist im anhang.

Update:
versucht einfach mal folgenden Code in einem Thread auszuführen:


                        String text;
                        foreach (Process P in Process.GetProcesses())
                        {                        
                            try
                            {
                                text += P.Handle.ToString();
                            }
                            catch (Exception e)
                            {
                                MessageBox.Show(e.ToString());
                            }
                        }

ich versteh nicht warum das nicht geht.

01.12.2012 - 11:53 Uhr

das problem ist nicht alle prozesse in eine liste zu packen. das problem ist die zugriffsverletzung, wenn ein thread objekte dieser liste benutzen will.

genauer: ich kann auf P.Handle nicht zugreifen. P.ProcessName ist seltsamerweise sogar abrufbar

01.12.2012 - 10:53 Uhr

Hey,

Es geht um diese simple Funktion


        /// <summary>
        /// Taskliste auslesen
        /// </summary>
        /// <returns>Taskliste</returns>
        public static List<Process> getTasklist()
        {
            List<Process> prozessliste = new List<Process>();

            foreach (Process P in Process.GetProcesses()) 
            {
                prozessliste.Add(P);
            }

            return prozessliste;
        }

wenn ich nun aus einem Thread die Funktion benutze und anschließend mit dem Ergebnis weiterarbeiten möchte (z.B. P.Handle abfragen), wird der Zugriff verweigert.

Ich stehe irgendwie auf dem Schlauch.. solange ich die gleiche Befehlsabfolge ausserhalb eines Threads benutze, geht alles reibugnslos

UPDATE: ich kann ausschliesslich auf P.Handle nicht zugreifen. P.ProcessName ist abrufbar

04.09.2012 - 22:30 Uhr

yesss, da ist sie =) sauber, ein glück, dankedanke

04.09.2012 - 21:25 Uhr

Hallo,

mir ist eben beim Arbeiten mein Visual Studio C# 2010 Express abgestürzt.

Danach war eine wichtige .cs Datei einfach weg, wiederherstellen wurde mir nicht angeboten?!

gibt es noch irgendeine Möglichkeit die Datei zu retten ohne 2 Terrabyte Sektor für Sektor zu scannen?

...über jede Hilfe dankbar...

04.09.2012 - 16:49 Uhr

danke, hat mir beides sehr geholfen!

04.09.2012 - 14:53 Uhr

Hey,

ich habe einen Text vorliegen, in dem sich über mehrere Zeilen hinweg statische Bezeichner und Informationen abwechseln.

Ich möchte diese Informationen herausfiltern und in Objekten speichern.


Erstes Beispiel: (statisch ist blau, variabel ist rot)

Nummer #:::

Frage

  1. Wie zerlege ich den String möglichst geschickt um an die Informationen zu kommen? Mit String.Split komme ich nicht besonders weit, da ich dort nur einzelne chars eingeben kann, die statischen Bezeichner aber Strings sind.

zweites Beispiel: (statisch ist wieder blau, variabel ist rot)
irgendeinlangertext
irgendeinlangertext
irgendeinlangertext
ANKER
Name 1:::

...

Name x:::

Fragen:

  1. In einem ersten Schritt möchte ich alles ausserhalb ANKER und Beginn der Zeile von ANKER2 löschen.
  2. In einem zweiten würde ich dann die Zeilen einzeln durchgehen (analog der Vorgehensweise von Beispiel 1).

Wär super wenn jemand eine hilfreiche Funktion und / oder Erklärung hat 😉