Habe nun ein kleines Programm welches mir alle Fenster eines Prozesses zeigt.
Bei VFP 9 zeigt er kein einges Handle auf ein Fenster an. ENUMWINDOWS wurde verwendet.
Jemand eine Ahnung?
Dasonomos schrieb:
Ich hätte es eigentlich zuerst mal mit der GDI verwendet. Sowas wie DrawRectangle() und auf die richtige Größe gezeichnet.
Reicht für ein simples Balkendiagramm definitiv aus, ist exportierbar als Image und relativ leicht umzusetzen. Und mit etwas Gewöhnung kann man damit auch komplexe Funktionen zeichenn lassen.
mache es jetzt auch mit der GDI ... und dem rectangle...
das Coordinatensystem kann ich ja noch einzeln daneben erstellen dank GDI
reicht für mein Projekt auch aus
Danke euch
ok
man kann ja eigentlich nichts falsch machen - solang es klar lesbar ist und gut wartbar ist es gut - "professionell" hin oder her #gg
ma gugg
ich hatte das glaub ich ziemlich uebernommen von der msdn da ich genau so auch brauchte #gg
<Window.Resources>
<!-- ToDo: move the CollectionViewSource to the ListBox direct -->
<CollectionViewSource x:Key="UserSource" Source="{Binding Path=Users}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Mode" />
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
.
.
.
<ListBox ItemsSource="{Binding Source={StaticResource UserSource}}" SelectedItem="{Binding CurrentUser}">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin" Value="0,0,0,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,10,0" />
<TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/>
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
ich hab noch auf meiner todo stehen die collectionviewsources von den resourcen direkt in die liste zu packen , hatte bei der erstem implementation keine zeit das ich es schnell zusammen geschustert hatte {hab das ToDo: mark aber eben erst wieder gefunden #gg}
ich mags nicht sowas unnoetig auseinander zu ziehen {weil man es nur an einer stelle braucht}
btw , die namen user und mode sieht zwar sehr nach demo aus , aber ich hab wirklich eine user liste #gg
so - jetzt erstma arbeits musik ein schalten - muss noch was schaffen {=
http://www.youtube.com/watch?v=85mLq4vH_mc
http://www.youtube.com/watch?v=P84eAzdmHkw
Ich hoffe ich bin noch nicht zu spät.
Den Benutzer, der das Programm ausführt, kannst du mit Environment.UserName ermitteln:
http://msdn.microsoft.com/de-de/library/system.environment.username.aspx
Das heißt dein Programm dürfte dann nicht als Dienst vom System, sondern vom User selbst im Autostart ohne Form gestartet werden. Die Benutzerrechte bkommst du so bestimmt irgendwie über die Konsole raus.
Die andere Möglichkeit schaut aus wie folgt:
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal p = new WindowsPrincipal(id);
bool isAdmin = p.IsInRole(WindowsBuiltInRole.Administrator);
Du musst nur noch eventuelle Exceptions per catch abfangen und/oder isAdmin zurückgeben.
Ja, das dachte ich mir auch schon. Allerdings ist das Projekt jetzt leider schon mit C# ziemlich weit.
Es würde sich ja immer noch die Möglichkeit über DLL's bieten.
HAllo Leute,
mit "OleDB", kann ich access datenbank öffnen, tabellen erzeugen, querys starten was auch immer!! Aber WIE kann ich eine komplett neue leere Datenbank erzeugen unter C#? Mit ADOX, ist das ne gute Lösung? Oder was meint ihr?
Danke schonmal
Du musst alle Zugriffe auf "DownloadStatusList" synchronisieren, denn alle Zugriffe sind "in Threads". Auch der Haupt-Thread eines Programms ist ein Thread. Auch dort musst du synchronisieren.
Wenn DownloadStatusList ein Control ist, oder in RemoveAt bzw. Insert Controls angesprochen werden, dann darfst du die Funktionen sowieso nicht aus einem anderen Thread als dem GUI-Thread ausführen.
Wenn die RemoveAt bzw. Insert Funktionen andere Funktionen von anderen Klassen aufrufen, musst du evtl. noch viel mehr synchronisieren als du denkst.
Ahh Danke.
Schiff bekam seine Koordinaten von der pictureBox22.
Ich habe jetzt einfach statt SChiff-- einfach SChiff -1 eingesetzt.
Jetzt geht es komischer Weise
Danke
mfg Mongolid
PS: Kann man Point Schiff = this.pictureBox22.Location auch als public machen? Würde mir sehr viel Code sparen^^
Destiniy schrieb:
Achso dieser Type Header File ist ein ganz normales C Header File ohne irgendwelche namspaces.
könnte es damit was zu tun haben?
MfG
Ja. Mappe deine C- Typen auf C++/CLI um.
Versionssprünge in .NET sind nicht so wild. Dabei handelt es sich hauptsählich um Performanceverbesserungen und dem Ausbau der riesigen Klassenbibliothek.
Viel entscheidender sind die Sprünge in der Sprachsezifikation, z.B. von C#.
Die Sprache hat sich in den vergangenen Jahren ganz gravierend verändert. Mit C# 3.0 hat man ganz wesentliche Elemente für die funktionale Programmierung hinzugefügt. Davor kamen die Generics.
Das Tempo dieser Veränderungen war in den vergangenen Jahren gewaltig. Ich nehme an das sich das bald deutlich verlangsamen wird.
Das Stichwort heißt CookieContainer! Du musst über den WebResponse die Logindaten speichern.
Siehe http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html?start=5
Die Funktion minDistIndex liefert Dir für eine gegebene Zahl den Knoten mit dem kleinsten Abstand und index größer als die gegebene Zahl. Am Anfang ist z=0 und jeder Knoten kann gewählt werden. Die Variable z wird aber hochgezählt und dadurch werden ab dem nächsten Durchlauf nur noch Knoten mit Index >=1 betrachtet, genauer im i-ten Durchlauf Knoten mit Index >=i-1.
Aber es sollte durchaus erlaubt Knoten 0 zu einem deutlich späteren Zeitpunkt noch zu expandieren.