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?
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?
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
danke schoma
ich muss die dinger zur laufzeit casten um auf ihre (überschriebene) funktionen zugreifen zu können
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?
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.
gleiches problem.. alles was das geshottete fenster überlappt kommt mit auf den screenshot
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...
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ß
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?
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.
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.
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
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
yesss, da ist sie =) sauber, ein glück, dankedanke
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...
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
zweites Beispiel: (statisch ist wieder blau, variabel ist rot)
irgendeinlangertext
irgendeinlangertext
irgendeinlangertext
ANKER
Name 1:::
...
Name x:::
Fragen:
Wär super wenn jemand eine hilfreiche Funktion und / oder Erklärung hat 😉