Laden...
M
Benutzerbeschreibung
Lehrling Applikationsentwickler

Forenbeiträge von matge Ingesamt 18 Beiträge

09.07.2008 - 13:53 Uhr

Gibt es wirklich keine möglickeit?
Beim scrollen wird nichtmal der MouseDown-Event gefeuert... hab ich grade herausgefunden.

Bin um jede idee dankbar!

08.07.2008 - 14:26 Uhr

Damit bekomme ich die Linie eines bestimmten Buchstaben zurück oder?
Das nüzt mir in meinem Fall nichts, da der Fokus auf einem anderen Control liegt, während der benutzer den Scrollbalken nach oben schiebt.
Deshalb muss ich die aktuelle Position herausfinden.

08.07.2008 - 13:19 Uhr

Hallo zusammen!

ich arbeite momentan an einem Chatprogramm.
In einer Textbox wird die Unterhaltung angezeigt. Damit natürlich immer die aktuelste Nachricht sichtbar ist scrolle ich mit scrollToCarret immer auf die unterste zeile.
Wenn ich eine stelle im Text markiere bzw wenn es den Fokus hat scrollt es natürlich nicht automatisch, sonst kann man ältere unterhaltungen nicht mehr lesen. Das fuktioniert soweit.
Was nicht funktioniert ist folgendes:
Wenn das Text-Eingabefeld markiert ist und ich ziehe denn scrollbar des Chatverlaufs nach oben, hat das Textfeld noch den fokus--> es wird automatisch nach unten gescrollt und mann kann denn alten Text nur müsahm lesen.

Wie kann ich überprüfen zb auf welcher zeile sich der Benutzer befindet? Oder an welcher Position der Scrollbar ist?

gruss matge

29.05.2008 - 15:29 Uhr

HA! ich habe es geschaft!
Nach langem üben habe ich auch verstande wie die Callback Funktion arbeitet.

[DllImport("user32.dll")]
        public static extern int EnumWindows(CallBackPtr callPtr, IntPtr lPar);
        [DllImport("user32.dll", EntryPoint = "GetWindowTextA")]
        static extern long GetWindowText(long hwnd, string lpString, long cch);
        [DllImport("user32.dll", EntryPoint = "GetWindowTextLengthA")]
        static extern long GetWindowTextLenght(long hwnd);
        [DllImport("user32.dll", CharSet=CharSet.Auto)]
        static extern IntPtr GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
        public delegate bool CallBackPtr(IntPtr hwnd, IntPtr lParam);


der auslöser der Funktion:

CallBackPtr callBackPtr = new CallBackPtr(Report);
            EnumWindows(callBackPtr, IntPtr.Zero);

und die Callback Funktion

public bool Report(IntPtr hwnd, IntPtr lParam)
        {
            IntPtr Res;
            StringBuilder ClassName = new StringBuilder(100);
            //Get the window class name
            
            Res = GetClassName(hwnd, ClassName, ClassName.Capacity);
            if (Res != IntPtr.Zero)
            {
                if (ClassName.ToString() == "CabinetWClass")
                {
                //Code
                 }
            }            
            return true;
        }
28.05.2008 - 12:36 Uhr

@herbivore:
Ich meine natürlich die Fensterklasse, und nicht die .NET-Klasse, sonst würde das ja garkeinen sinn ergeben dass ich Explorer Fenster überprüfen will.

@Rahvin
anhand des Klassennamens überprüfe ich ob es sich um ein Explorerfenster handelt
(CabinetWClass).

Ich versuche momentan die API funktionen in C# zu realisieren jedoch verstehe ich die zeile des Excel codes nicht:

EnumWindows AddressOf FensterCallBack, ByVal 0&

Irgendwas mit Callback habe ich auch als Beispiel gefunden
http://www.pinvoke.net/default.aspx/user32.EnumWindows

Aber ich checks net... X(

28.05.2008 - 11:19 Uhr

Aha! Wenn ich das richtig verstanden habe dann brauche ich mich nicht um Child Windows zu kümmern, es geht mir ja nur um die Explorer Fenster.
Ich habe schon eine Liste aller Fensterhandles per API funktion ausgelesen. Was noch fehlt ist: Wie kann ich vom Fensterhandle auf die Klasse kommen?

Durch eine Kurze Google suche habe ich gefunden was ich brauche!
http://www.online-excel.de/excel/singsel_vba.php?f=95
Es Funktioniert auch
Genau diese Auflistung benötige ich, jedoch verstehe ich den ablauf des codes nicht...

Bin mal am weiter üben... kann aber hilfe sehr gut gebrauchen!

28.05.2008 - 08:35 Uhr

Ich denke mit EnumWindows bekomme ich genau das was ich benötige!
Als hilfe habe ich ein Tutorial gefnunden, allerdings in VB.NET
http://www.vbarchiv.net/api/details.php?id=enumwindows

die API Funktionen in C# umzusetzen ist grundsätzlich kein grosses Problem, jedoch verstehe ich den ablauf nicht...

Was ist der unterschied zwischen Windows und Childwindows?!

Ich bringe es in VB auch nicht zum laufen... (ich kann kein VB)

gruss matge

27.05.2008 - 14:44 Uhr

Hallo zusammen!

Mein neues Projekt ist ein Verlauf für Explorerfenster. Wenn eines geschlossen wird, soll es über das Traymenu wieder geöffnet werden können.
Ich habe bereits in einer anderen "Programmiersprache" (AutoIt) etwas ähnliches Programmiert, was aber aus anderen Gründen nie richtig funktioniert hat. Die Fenster habe ich in mit der eingebauten Funktion WinList("lassname=ExploreWClass") geholt.

Wie kann ich in C# alle Fenster auslesen?

Ich denke es gibt 2 möglichkeiten:

  1. Alle Fenster überprüfen ob sie vom prozess Explorer.exe sind (fände ich sinnvoll)
    oder
  2. Alle Prozesse überprüfen ob sie offene Fenster besitzen.

Ich weiss weder wonach ich suchen soll, noch ob es .NET funktionen gibt oder windows API genutzt werden soll.

Was ich bereits gefunden habe: Process.GetProcessesByName("explorer.exe")

API Funktion GetWindowThreadProcessId

Bin dankbar für jegliche Lösungsideen

gruss matge

23.05.2008 - 16:26 Uhr

unglaublich!
*gegendiewandrenn*
Ich habe den Fehler gefunden! Die Dateien au meinem (normalerweise zu gemüllten) Desktop waren nur 2-3 Verknüpfungen im All Users Ordner. Deshalb waren auch keine Files drin. Als ich testfiles erstellte und das programm laufen lies habe ich wahrscheinlich beim ersten mal durchlaufen lassen den debuger vergessen zu starten... beim 2ten mal mit debuger waren warscheinlich die Files scho verschoben... anders kann ich mir das nicht erklären

Jedenfalls funktioniert mein Programm wieder bzw immernoch einwandfrei 👅

--> danke für eure hilfe.

23.05.2008 - 11:06 Uhr

Der Inhalt lautet im Debuger:
"C:\Dokumente und Einstellungen\xxxx\Desktop\DesktopBackups\08-05-23\"

Der Pfad stimmt und ich habe ihn auch schon durch einen fixen string ersetzt...

23.05.2008 - 09:25 Uhr

mein code:


static void Main(String[] _args2) 
        {

            string pathDesktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) ;
            string pathBackup = pathDesktop + "\\DesktopBackups\\" + DateTime.Now.ToString("yy-MM-dd") + "\\";

            Directory.CreateDirectory(pathBackup);

            String[] Files = Directory.GetFiles(pathDesktop);
            for(int i = 0; i < Files.Length;i++){
            //hier werden die Files Kopiert
            }


Exceptions treten keine auf, der code durchläuft den try{} garnicht da Files.Length immer 0 ist....

22.05.2008 - 16:04 Uhr

Hallo zusammen!

Ich habe seit heute auf meinem Rechner das Service Pack 3 für Windows XP installiert.
Jetzt ist mir aufgefallen das mein in C# geschriebenes Backuptool nichtmehr funktioniert bzw nur startet aber nichts kopiert.
Im Debuger habe ich festgestellt das Directory.GetFiles(pfad) nichts zurückgibt!
Das selbe passiert bei Directory.getDirectories()..
den Pfad den ich Verwende: Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
Berechtigung habe ich natürlich auch (Administrator)

Kann mir jemand weiterhelfen???

gruss matge

28.04.2008 - 10:41 Uhr

dankeschön!
genau was ich gesucht habe!

25.04.2008 - 16:35 Uhr

Hallo zusammen!

Wie kann ich einstellen das bei meinem Programm nur die Form erscheint wenn bestimmte bedingungen erfüllt sind? ( zb File nicht vorhanden usw.)

Wenn ich eine Windows Anwendung wähle sehe ich den Konsolen output nicht, und wenn ich Konsole wähle und die Form öffne habe ich leider noch das Konsolenfenster im hintergrund....

Hat jemand eine idee?

gruss matge

13.12.2007 - 08:16 Uhr

Nein, RegisterHotKey leider wird nicht benutzt. Ich habe zwar die Klasse heruntergeladen und angeschaut, jedoch verstehe ich nur bahnhof 🙁

12.12.2007 - 16:08 Uhr

Hallo zusammen!

Ich baue mir momentan einen eigenen Mediaplayer zusammen. Selbstverständlich sollte er auf die eingebauten Mediakeys in der Tastatur reagieren sowie es auch andere wie iTunes und Winamp können.

Das entscheidende stichwort für eine systemweite Tastenkombination bzw zur abfrage der Tasten ist GlobalKeyHook.
Folgendes habe ich schon gefunden:
http://www.codeproject.com/KB/cs/globalhook.aspx

Das Problem ist das dieses kleine tool das eigentlich passend wäre die MediaKeys nicht erkennt.
Die Tasten sind im C# unter Keys.MediaPlayPause usw vorhanden.

Kann mir da jemand weiterhelfen?

12.11.2007 - 15:08 Uhr

Auf diesen Thread habe ich ja im Text sogar selber verlinkt 😉
aber das Problem hat sich schon erledigt!
ich habe jetzt einen eigenen Thread gestartet der 50ms lang auf weitere parameter wartet und erst dann die neue Playlist(zb ein gesamtes album) an den player weiterschickt

aber danke trotzdem 🙂

12.11.2007 - 14:19 Uhr

Hallo zusammen!

Ich bin momentan dran mir einen eigenen MediaPlayer zu basteln (wegen meinen sehr speziellen anforderungen usw) Der Player sollte natürlich einfach zu benutzen sein und alle wichtigsten funktionen unterstützen:
-per Drag&Drop öffnen
-mehrere dateien beim starten laden
-usw

natürlich soll auch nur eine Instanz des players laufen und die weiteren mp3s sollen im selben player geladen werden. Ich hatte am anfang grosse schwierigkeiten das zu realisieren jedoch nach einigen stunden ausprobiere und mit hilfe von diesem Thread habe ich es hinbekommen. (Grosses dankeschön an alle die dort mitgeschrieben haben)
zum test habe ich au meinem PC eine neue Dateinamenerweiterung namens .abc gemacht und diese ind der Registry mit meiner .exe verknüpft. wenn ich nun mit dem befehl player.exe C:\file.abc mein programm starte funktioniert das einwandfrei. Mit dem befehl player.exe C:\file1.abc C:\file2.abc funktioniert es auch das beide geladen werden. Wenn ich eine .abc-datei doppelklicke funktioniert es auch.
Was jedoch NICHT funktioniert ist wenn ich mehrere dateien im explorer markiere und ENTER drücke.
Der Grund dafür ist das Windows nicht sowas macht wie:
player.exe C:\file1.abc C:\file2.abc
sondern:
player.exe C:\file1.abc
player.exe C:\file2.abc
mein programm öffnet sauber zuerst die erste dann die zweite datei so wie es sein sollte wenn es zweimal geöffnet wird, nur stört mich diese verhalten wenn ich zb in einem Album Ordner alle dateien markiere und enter drücke, dann will ich natürlich die komplette liste haben(genau so verhält sich z.b. Winamp).

Hat jemand eine idee?