DriveLetters

Samael23

Cadet 3rd Year
Registriert
Jan. 2007
Beiträge
57
Hallo zusammen,

ich suche ein paar Leute, die mein neuestes Programm: "DriveLetters" unter die Lupe nehmen. Bevor ich ein paar Sätze dazu erkläre, erst mal ein Screenshot:

DriveLettersSmall.jpg


Hier in gross: http://spacey-home.de/DriveLetters/DriveLetters.jpg

OK, was macht das Programm? Beim Start sammelt das Programm alle vorhandenen Laufwerke und stellt sie in einem Fenster dar. Diese Fenster können nach Belieben positioniert werden. Ausserdem wird im Systemtray ein neues Icon eingeblendet. Mit einem Doppelklick oder per Rechtsklick darauf erscheint das Hauptmenü.

Der Balken zeigt den aktuellen freien oder nach einem Klick darauf den belegten Speicherplatz an. Durch einen Rechtsklick auf das Bildchen erscheint das Menü.

- Fixieren: Entfernt den Rahmen des Fensters.

- Hintergrundfarbe: Wie es der Name schon sagt.

- Schriftfarbe: Siehe Hintergrundfarbe

- Balkenfarbe: Legt die Farbe für den Fortschrittsbalken fest. Kann sein, dass ihr erst im Hauptmenü des Programms, den Punkt "XP-Stil" verwenden deaktivieren müsst.

- Transparente Farbe: Legt die Farbe fest, die transparent dargestellt wird. Beim ersten Start wird schwarz durchsichtig dargestellt.

- Durchsichtigkeit: Blendet ein Fenster ein, indem Ihr diesen Wert einstellen könnt.

- Laufwerksaktivität anzeigen: Vergrössert das Fenster und zeigt aktuelle Lese- und Schreibwerte des Laufwerks an. Die erste Zeile zeigt aktuelle Werte der letzten Sekunde, die Zweite das kummulierte Volumen und die Dritte den Maximalwert.

- Rahmen zeichnen: Zeichnet einen weissen Rahmen um das Fenster.

- Dieses Laufwerk ausblenden: Lässt das Fenster des Laufwerks verschwinden.

Zum Hauptmenü: In diesem Fenster befinden sich 2 Listboxen. In der Linken werden alle ausgeblendeten Laufwerke angezeigt. Diese können bei Bedarf wieder in die Liste der aktiven (Rechte Listbox) eingereiht werden. Die Rechte Listbox macht das Gegenteil.

DVD/CD anzeigen: Diese Option habe ich daher eingebaut, da der langsame Zugriff auf optische Laufwerke das Programm verzögern kann. Vor allem dann, wenn eine DVD/CD im Laufwerk liegt, die sich schlecht "lesen" lässt. Aber generell kann diese Option aktiviert bleiben.

XP-Theme benutzen: Wie man an meinem Screenshot sieht, benutze ich ein anderes Windows-Theme. Wenn ich die Balkenfarbe, wie oben erwähnt, verändere, hat das keinen Effekt. Um andersfarbige Balken zu erhalten, müsste ich diese Option deaktivieren.

Tooltip unterbinden: Bewegt man die Maus über die anzeigten Leistungswerte der Laufwerke, wird in der Mitte des Bildschirms eine kurze Erklärung eingeblendet. Wenn man weiss, was die Zahlen bedeuten, kann man das abschalten.

Der Button "Verstecken" blendet das Hauptmenü einfach wieder aus.

Das Programm erkennt ausserdem, wenn ein neues Laufwerk (USB-Stick usw.) angeschlossen wird und erzeugt ein neues Fenster dafür. Analog dazu verschwinden auch die Fenster, wenn man den USB-Stick trennt oder die DVD/CD aus dem Laufwerk nimmt, sprich, das Laufwerk nicht mehr bereit ist.

Alle Einstellungen werden natürlich gespeichert.

So das wars. Bitte teilt mir Fehler, Anregungen oder Kritik entweder an meine EMail: stenderd@gmail.com oder per ICQ: 393080638 mit.

So, nun noch den Download-Link: http://www.spacey-home.de/DriveLetters/DriveLetters.zip

Bitte achtet darauf, dass die .dll bei der .exe im Verzeichnis liegt.


Vielen Dank und happy testing


Samael


Ach ja, lol. Der Grund, warum ich das überhaupt gemacht habe ist: Ich wollte meine langweiligen Laufwerksverknüpfungen vom Desktop weg haben. Ein Linksklich auf das Bildchen öffnet natürlich das Root-Verzeichnis des jeweiligen Laufwerks....
 
Sieht sehr hübsch aus und es scheint als hättest du dir einige Arbeit gemacht. Nicht schlecht.
Ich würde es gern für dich testen, aber ich führe nicht gern Software von Fremden Leuten
bei mir aus, von der ich nicht weiß was sie macht (das ist bei Software die binary-only vertrieben
wird nunmal leider immer der Fall.)

€: Ich persönlich halte sehr viel von freier Software und wenn du nicht vorhast, für dein
Programm Geld zu verlangen, wie wäre es, wenn du es beispielsweise unter der GPL(1)
als freie Software(2) veröffentlichst? Ich denke, so könnten die meisten Leute von deiner
Arbeit profitieren, und ich und viele andere würden der Software eher vertrauen.

(1) http://de.wikipedia.org/wiki/GNU_General_Public_License
(2) http://www.gnu.org/philosophy/free-sw.de.html
 
Zuletzt bearbeitet:
Das mach ich auch nicht gerne, gebe ich Dir vollkommen recht... Wenn Du mir ne EMail schreibst, dann schick ich dir gerne das Projekt.

Ist in VB.Net 2008 geschrieben, ich weiss ja nicht, ob Du damit was anfangen kannst.

-------

Als Alternative bleibt das Testen in einer Virtual Machine, bist Du sicher bist, dass das Programm nichts schadhaftes anrichtet....

Geld verlangen? Niemals! Ich mache das aus reiner Freude. Ich schicke auch jedem gerne den Code für das Programm.

Ausserdem, wer würde für so ne Kleinigkeit schon Geld zahlen :p
 
Zuletzt bearbeitet von einem Moderator: (Doppelpost zusammengefügt - bitte Editbutton benutzen!)
Ich habe Visual Studio 2008 und würde es mir schon gern mal ansehen.
 
Danke. Ich kann wohl zu VB an sich nicht so die Hilfe sein, aber ich hab mal
einen kleinen Blick in das Projekt geworfen und mir ist was aufgefallen, das
man ggf. verbessern könnte:

Code:
Form1.Designer.vb:        Me.Button1.Text = "Verstecken"
Form1.Designer.vb:        Me.Button2.Text = "Beenden"
Form1.Designer.vb:        Me.Label1.Text = "Ausgeblendet:"
Form1.Designer.vb:        Me.Label2.Text = "Aktive:"
Form1.Designer.vb:        Me.btnAct.Text = "->"
Form1.Designer.vb:        Me.btnInac.Text = "<-"
Form1.Designer.vb:        Me.CheckBox1.Text = "DVD/CD anzeigen"
Form1.Designer.vb:        Me.GroupBox1.Text = "Optionen"
Form1.Designer.vb:        Me.CheckBox2.Text = "XP-Theme benutzen"
Form1.Designer.vb:        Me.CheckBox3.Text = "Tooltip unterdrücken"
Form1.Designer.vb:        Me.Text = "DriveLetters"
So und ähnlich finde ich viele Stringzuweisungen im Projekt. Windows
bietet an, Strings als Resourcen an das Binary anzuhängen. So hat man
sie alle an einem Platz und nicht über das ganze Projekt verteilt.
Das macht Korrekturen oder beispielsweise Übersetzung viel einfacher.
Vielleicht wär das ja etwas, das sich lohnt, zu ändern.

€: Mal ein Beispiel, falls nicht ganz klar ist, was ich meine.

In C gibt es eine Funktion, printf() für formatierte Textausgabe.
Man stelle sich ein Spiel vor, bei dem am Ende der Sieger und
seine Punktzahl ausgegeben werden soll.
Das könnte man beispielsweise so lösen:

printf("Der Spieler %s hat gewonnen. Er erreichte %d Punkte.", name, score);

für %s wird ein String eingefügt (hier in der Variablen 'name') und für
%d eine Zahl im Dezimalsystem (hier in der Variablen 'score').

Man könnte aber auch den String "Der Spieler %s hat gewonnen. Er erreichte %d Punkte."
in einer Resource speichern, und printf dann ungefähr so aufrufen:
printf(getresource(), name, score);

Für "geresource()" müsste man dann die Funktion einfügen, die den
String aus den Resourcen holt.

Wenn man das Spiel dann auf Englisch übersetzen möchte, ändert
man die Resourcentabelle (in der auch alle anderen festen Strings
stehen) in "The player %s won. He scored %d points.".

So könnte man, wenn man das für alle festen Strings wiederholt,
das komplette Spiel auf Englisch übersetzen, ohne auch nur eine
Zeile Code ändern zu müssen.

Ich hoffe, das war jetzt nicht allzu umständlich erklärt.
 
Zuletzt bearbeitet:
OK, danke. Das werd ich mir mal anguggn. Ich mache das als Hobby. Alles, was ich kann, hab ich mr selber beigebracht.

Ich bin weit davon entfernt, das du nutzen, was Visual-Studio bietet.

-------

Nene, hab schon verstanden. Habs auch schon rausgefunden, wie es zu benutzen ist :) Ist ja nicht sonderlich schwer.

Es macht auch Sinn, auf jeden Fall. Werd mich in Zukunft daran halten. Aber manchmal muss einfach jemand kommen, der einem einen Denkanstoss gibt, danke!!!!
 
Zuletzt bearbeitet von einem Moderator: (Doppelpost zusammengefügt - bitte Editbutton benutzen!)
1.) Das Tool ist ja einmal wirklich cool. Ich habe schon die ganze Zeit irgendein schlankes Tool gesucht, dass mir den Zugriff auf die Platten schnell anzeigt, ohne dass ich jedes Mal den Taskmanager öffnen muss und selbst rechnen muss, wie viele MB/s das sind und vielleicht noch mehrere Prozesse zusammenzählen.

2.) Kannst du mir auch das Projekt schicken. Ich verwende auch hauptsächlich VB.NET und das VS 2008. Mich würde wirklich interessieren, wie du das gemacht hast und ich kann davon sicher eine Menge in meinen zukünftigen Projekten brauchen. Meine Email Adresse ist andreasPUNKTgindlerÄHTgmxPUNKTat

3.) Ein paar Bugs sind noch drin. Wenn ich z.B. auf Fixieren gehe, dann bleibt ein Rest vom Kontextmenü am Desktop stehen, bis ich mit einem Fenster drüberfahre. Hier könnte ein Refresh helfen.
Das mit der Transparenten Farbe spinnt auch etwas. Wenn ich schwarz wähle, dann habe ich die Hintergrundfarbe vom Desktop (das siehst du z.B. nicht, weil du einen schwarzen Hintergrund hast). Wenn ich etwas anderes habe, dann ist es schwarz und wenn ich weiß wähle, dann ist die Schrift durchsichtig. Dort, wo man den Hintergrund vom Desktop sieht, kann man übrigens nicht aufs Kontextmenü klicken, sondern bekommt nur den normalen Desktop. Wenn man die Farbe ändert, dann geht es wieder.

4.) Weiters hängt das Tool etwas, wenn ich eine CD einlege. Hier wäre ein anderer Thread nicht schlecht. Nachher zeigt er das Laufwerk auch nicht an, wenn es ein leerer Rohling ist.
Meine Musik CD, die ich herumliegen habe, frisst er auch nicht. Da kommt dann folgende Fehlermeldung beim Rechtsklick auf das Icon neben der Uhr (wie heißt die Leiste noch einmal):

Code:
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at WindowsApplication2.DriveIcon.GetValues()
   at WindowsApplication2.DriveIcon..ctor(String driveLetter)
   at WindowsApplication2.Container..ctor(String driveLetter)
   at WindowsApplication2.Form1._t_Tick(Object sender, EventArgs e)
   at System.Windows.Forms.Timer.OnTick(EventArgs e)
   at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
DriveLetters
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Temp/DriveLetters/DriveLetters.exe
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
STDsConfig
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Temp/DriveLetters/STDsConfig.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 
Zuletzt bearbeitet:
@andr_gin

1) Danke schön :D

2) Hab Dir ne PM geschickt. Guggst Du!

3) Das "Hängenbleiben" des Menüs kommt daher, dass eine Farbe transparent dargestellt wird. Eigentlich ist es nicht die Form, die hängt, sondern der Windows-Desktop, bzw. das Hintergrundbild. Muss ich nen Desktop-Refresh einbauen, kein Ding :freak:

Das mit der transparenten Farbe hab ich mir so gedacht: Man wählt eine Farbe, die transpartent dargestellt wird. Wenn Du z. B. die Farbe blau wählst, dann wird blau im Programm nicht angezeigt, sondern ist durchsichtig. Wenn Du jetzt weiss wählst, dann musst Du eine andere Schriftfarbe einstellen, da weiss durchsichtig dargestellt wird. Ist durchaus so gewollt.

Stimmt, wenn Du ne durchsichtige Farbe hast, dann musst Du auf das Icon klicken, damit das Click-Ereignis ausgelöst wird. Das weiss ich leider nicht, wie es zu ändern ist.

4) Ja, da hast Du recht. Mit CD-Laufwerken hatte ich meine liebe Mühe. Deswegen hab ich den Menüpunkt, DVD/CD-Laufwerke ausblenden eingebaut. Musik-CDs wollte er nicht akzeptieren. Hab mir schon von anfang an üblerlegt, ob ich nicht jedes Laufwerk in nem eigenen Thread laufen lasse. Aber dann hatte ich das Problem, dass sich die Form sofort geschlossen hat, wenn ich das ganze nicht in einem Loop laufen lies. Ich weiss zwar, dass man Klassen jeweils in einem eigenen Thread laufen lassen kann, aber das übersteigt meine derzeitigen Kenntnisse. Da muss ich erst was drüber lesen. Vielleicht hast Du eine Idee dazu?

Wie gesagt, blende Die optischen Laufwerke aus, solange ich keine passende Lösung dazu gefunden hab.

Die Leiste neben der Uhr nennt sich der System-Tray.

Ausserdem ist mir aufgefallen, dass CD/DVD-Laufwerke, sowie USB-Sticks keine Leistungdaten abliefern. Muss ich mal guggn, ob man da was machen kann....

Ach ja. Der Schlüssel zu den Leistungswerten sind die PerformanceCounter, das wirst Du ja im Project sehen.

So long...


Danny :schaf:
 
1.) Das Problem mit den Audio CDs liegt darin, dass die Größe der Disk dann 0 Bytes ist. In der Funktion GetValues dividiert er dann 0Bytes (used) durch 0 Bytes(total) und da schmeißt es ihn dann auf, weil man nicht durch 0 dividieren darf. Was den Thread angeht, so werde ich da noch nachforschen.

2.) Ok auf das mit der Hintergrundfarbe muss man einmal kommen, dass der Hintergrund normal schwarz ist.

3.) Kannst du mir sagen, was die Methode FlushMemory macht? Und wieso muss man die eine Funktion bei Win32NT aufrufen (was ist damit gemeint, generell alles was 32Bit hat inkl. Vista oder nur 2K/XP)

4.) Brauchst du den STDsConfigManager unbedingt? Wenn du das umgehst, dann brauchst du kein .NET Framework 3.5, sondern dann reicht ein 2.0er und du bist zur Not auch Win2K kompatibel. Einmal abgesehen davon haben die wenigsten Rechner, die ich kenne (auch XP) schon ein .NET Framework 3.5. Das 2.0er ist ziemlich flächendeckend installiert, das 3.0er trifft man auch manchmal an (meistens bei Vista Rechnen, weil die das schon standardmäßig oben haben) und das 3.5 ist schon sehr selten. Umstellen kannst du das mit Rechtsklick auf Drives im Solution Explorer. Dann Properties => Compile => Advanced Compile Options => Target Framework 2.0.

5.) Ich habe beim ersten Start noch ein Y: Laufwerk drin gehabt in der Liste. Ich glaube das ist noch von dir. Einmal aktivieren und wieder zurück und weg ist es.

Edit: Ok es scheint so, als ob er einfach nur die dll vergessen hatte. Sollte jetzt auch mit .NET Framework 2.0 laufen.
 
Zuletzt bearbeitet:
hi
das prog sieht nice aus!
wenn du mir den code schickst kann ich es auch mal testen!
(hab vs-ex 2005 und 2008) kann also auch auf dem alten vs mal testen!
mfg Topfi
 
Zurück
Oben