Project Site

Da sich inzwischen doch ein paar kleine aber feine private Projekte angesammelt haben, gibt es nun eine neue site wo alle Projekte an einer Stelle zu finden sind:

http://projects.mwiedemeyer.de

Für den Proxy Switcher gibt es dort nun auch ein Forum, damit nicht alle Fragen verstreut über die einzelnen Blog Posts verteilt werden.

Außerdem gibt es dort noch zwei andere kleine Tools: AutoHistory for Word 2007 und den Browser Selector.

Proxy Switcher v1.5 – How to create your own switcher?

Proxy Switcher arbeitet derzeit mit dem Internet Explorer und Firefox zusammen. In der Regel greifen Anwendungen automatisch auf die Proxy Einstellungen des Internet Explorers zurück, weshalb es normalerweise vollkommen ausreichend ist.

Hat man nun aber einen Sonderfall, also eine Applikation die nicht auf die Internet Explorer settings zurückgreifen kann, benötigt man ein zusätzlichen “Switcher”.

In diesem Artikel zeige ich, wie einfach es ist, selbst einen zu entwickeln und im Proxy Switcher zu verwenden.

Implementierung

Zunächst erstellt man ein neues Class Library Projekt im Visual Studio 2008. Dies ist auch mit der kostenlosen Variante Visual Studio 2008 Express (C# oder VB.NET) ohne Probleme möglich.

image

Als nächstes fügt man eine Referenz auf ProxySwitcher.Shared.dll hinzu. Dort befindet sich die benötigte Basisklasse.

image

Nun noch die Class1.cs Datei umbenennen, z.B. in DemoSwitcher.cs. Dadurch wird auch automatisch die Klasse umbenannt. Diese Klasse muss nun von der SwitcherBase Klasse erben, wofür außerdem das using statement hinzugefügt werden muss:

image

Über das SmartTag was erscheint wenn man SwitcherBase ausgeschrieben hat, lassen sich automatisch alle benötigten Methoden erzeugen. Das wären “DisableProxy”, “EnableProxy” und die Eigenschaft “Name”.

image

Über die Name Eigenschaft kann man einen Namen vergeben, der später dann im Proxy Switcher angezeigt wird.

Enable und Disable sollte sich von selbst erklären. Innerhalb der Methoden kann man auf this.CurrentProxyEntry zugreifen um die Daten abzurufen, die nun aktiviert/deaktiviert werden sollen.

image

Damit hätten wir die minimal Implementierung beendet.

Erweiterte Funktionen

Man kann nun noch für seinen Switcher Einstellungen laden und speichern und auch einen Settings Dialog als Windows Form anbieten (wofür dann noch eine Referenz auf “System.Windows.Forms” hinzugefügt werden muss):

image 

Deployment

Nachdem man alles soweit fertig hat, muss das Projekt noch kompiliert werden. Dadurch entsteht eine DLL, in meinem Fall PSDemoSwitcher.dll.

Diese muss nur noch in das Verzeichnis kopiert werden, wo auch ProxySwitcher.exe liegt. Also normalerweise “C:\Programme\ProxySwitcher”.

Startet man nun den ProxySwitcher, erscheint im ersten Tab direkt mein neuer Switcher und kann selektiert werden, damit er auch aufgerufen wird.

image

 

Update:

Die dokumentierte Beispielimplementierung gibt es hier zum download.

Windows 7 + SSD = HIGH performance

Lange Zeit sind die Prozessoren immer schneller geworden, der Arbeitsspeicher ist schneller und vor allem immer größer geworden und langsam aber sicher wird (ist) die einzige Bremse im Computer die Festplatte.

Das trifft vor allem auf Laptops zu, da bei Desktops und Servern natürlich Platten mit 10k Umdrehungen und RAIDs möglich sind. Im Laptop dagegen hat man in der Regel nur Platz für eine Platte.

Hier kommen jetzt die SSDs ins Spiel. Klar kannte ich natürlich dieses Video:

Aber ich war etwas skeptisch, zumal leider keine 24 Platten in meinen Laptop passen... Also bringt auch eine Platte eine deutlich bessere Performance?

Kurze Antwort: JA! JA! JA!

Die G.Skill Falcon Platte hat den neuesten Controller und zusätzlich noch 64MB cache, was zusammen keine Wünsche offen lässt.

Mit Windows 7 hat Microsoft ja bekanntlich diverse Verbesserungen für SSDs implementiert, und das rockt (nicht nur im Windows Experience Index): 7,4 von 7,9!

image

Auch die subjektive Geschwindigkeit beim öffnen von Anwendungen oder beim Hochfahren von Windows ist seehr viel besser.

Müssen die SSDs nur noch günstiger werden...

Proxy Switcher v1.5

Version 1.5 ist fertig! Neben einigen Bug Fixes sind, wie bereits im Feature Preview Post erwähnt folgende neue Funktionen hinzugekommen:

  • Vollständige Integration in Windows 7, inklusive Jumplist support 
  • Internet Explorer 8 support
  • Standard Drucker wechseln
  • Scripting
    • Script kann nun mit dem proxy namen als Parameter aufgerufen werden

    • Beim deaktivieren der proxies kann nun ebenfalls ein script aufgerufen werden

    Leider gibt es einige Probleme mit Click-Once, so dass v1.5 weiterhin nur über ein Setup zur Verfügung steht und nicht automatisch aktualisiert wird (aber automatisch benachrichtigt, sobald eine neue Version verfügbar ist).

    Desweiteren hat es die Wählverbindung-Unterstützung nicht mehr in diese Version geschafft, ist aber definitiv auf der Roadmap für v1.6.

    Da Microsoft ein paar gravierende Änderungen am Proxy System vom IE 8 vorgenommen hat, gibt es nun einen Switcher für “Internet Explorer” und einen für “Internet Explorer 8”. Nur einer von beiden sollte, je nach System, aktiviert werden.

    DOWNLOAD HIER

    WICHTIG: Der Pfad zu den Einstellungen und Proxy Konfigurationen hat sich wie folgt geändert:

    Speicherort vor v1.5: C:\Users\[USERNAME]\AppData\Local\ProxySwitcher (Windows XP: C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\ProxySwitcher")

    Neuer Speicherort v1.5+: C:\Users\[USERNAME]\AppData\Roaming\ProxySwitcher (Windows XP: C:\Documents and Settings\[USERNAME]\Application Data\ProxySwitcher)

    Um die vorhandenen Einstellungen zu übernehmen, einfach alle Dateien im genannten Ordner in den neuen Ordner kopieren.

     

    Vorschau

    Für v1.6 steht, neben dem Support für Wählverbindungen, auch eine bessere Unterstützung für größere Firmen Deployments auf der Agenda (z.B. Konfiguration und Sperren von Änderungen über Group Policies, als auch Überwachung der Einstellungsdateien, so dass diese im laufenden Betrieb geändert werden können)

    Außerdem steht auch immer noch Opera support auf der Agenda... wird auf jedenfall noch vor v1.6 ausgeliefert...

     

  • UPDATE:

    Es gab ein kleines Problem mit den advanced exceptions, was nun behoben ist. Die Version ist nun 1.5.1. Sorry für die Unannehmlichkeiten!

    Windows 7: Open a new Form from the Jumplist

    With the Windows API Code Pack, Microsoft released a really cool managed wrapper for most of the new Windows 7 features. See here for more details and download.

    One thing you can do is to create a .NET app with Jumplist support. Jumplists are these cool menus appearing on right click on an icon in the task bar:

    image

    But there is something wrong with the jumplist: It can only launch new apps! The demo solution for the Code Pack launches notepad and some other things, but there is no word about how to open the same app but with a new form.

    So here is my solution, which is not very nice, but it works like a charm.

    Scencario:
    AppInstance1 is running –> click on a jumplist item starts a new instance –> appInstance2 now knows, that this is the second instance, so appInstance2 calls appInstance1 through remoting (IPC) and terminates–> appInstance1 receives the remoting call und execute something.

    Ok, how to implement this?

    First of all, create a new Windows Forms app and go to the Program.cs file. Within this class create a new class which works as your service for the remoting part and also a static reference to your form:

    static class Program
        {
            public class RemotingService : MarshalByRefObject
            {
                public RemotingService() { }
    
                public void ShowText(string text)
                {
                    Program.formMain.SetTextToTextBox(text);
                }
            }
    
            internal static Form1 formMain;

    Then you will need some remoting code for the communication. I created two methods “InitRemoting” and “CallRunningInstance”. InitRemoting is called from the main method if this is the first instance. CallRunningInstance is called if the main method detects, that this is the second instance.

    For the detection I use a system wide mutex.

    I hope you get the idea. Because there are some more lines of code I created a demo project for you to download:

     Download the entire working demo solution here.

     

    Proxy Switcher 1.5 – Feature Preview

    Hier gibt es heute schon mal eine kleine Vorschau auf die nächste Version.

    Nach vielen Mails und Kommentaren wurden hoffentlich die meisten Wünsche weitestgehend erfüllt.

    Zu den Neuerungen gehören:

    • Vollständige Integration in Windows 7, inklusive Jumplist support
      • image
    • Internet Explorer 8 support und damit auch unterstützung für Wählverbindungen
    • Standard Drucker wechseln
      • image
    • Scripting

      • Script kann nun mit dem proxy namen als Parameter aufgerufen werden

      • Beim deaktivieren der proxies kann nun ebenfalls ein script aufgerufen werden

    • Click-Once Anwendung. Damit gibt es automatische updates ohne Installation

     

    Es ist natürlich weiterhin Zeit für Anregungen, Wünsche und Kommentare.
    Als Release Termin für die Version 1.5 plane ich aktuell Ende Juni.

    Browser Selector

    UPDATE:

    You can download the sources from https://github.com/mwiedemeyer/browserselector

     

    Today I have created a little tool. I called it “Browser Selector”. It is for all people who uses more than one browser.

    My scenario:

    I’m using Opera and Internet Explorer. Opera for daily browsing and Internet Explorer for all Microsoft sites and for the company intranet.

    Browser Selector now helps to avoid copy&paste url’s in one of the browsers depending on the url. Instead I can click directly on each url from all applications (Outlook, MSN Messenger, etc) or even enter the url in the start menu and it opens automatically in the correct browser!

    Configuration:

    To configure, which url will be opened in which browser, there is a config.xml file:

    <?xml version="1.0" encoding="utf-8" ?>
    <BrowserSelector>
      <Rules>
        <Rule Url="microsoft.com" Browser="IE" />
        <Rule Url="live.com" Browser="IE" />
      </Rules>
      <Browsers>
        <Browser Name="Opera" Path="C:\Program Files (x86)\Opera\opera.exe" Default="true" />
        <Browser Name="IE" Path="C:\Program Files (x86)\Internet Explorer\iexplore.exe" />
      </Browsers>
    </BrowserSelector>

     

    There you see a Rules section. In the Url attribute you can use regular expressions as well.
    In the Browsers section you define all of your browsers and mark one as default which will be used if no rule matches.

    Now download the msi, install it and configure it as you like. It is well tested with Windows 7 RC.

    If you have any questions, problems or suggestions, write a comment.

    Proxy Switcher v1.3.1

    ! ENGLISH VERSION BELOW !

    Auf Anfrage eines freundlichen Nutzers gibt es ab sofort eine neue Auto Switch Funktion: “Adapter Description contains”.

    Um ein klein wenig “Dokumentation” hinzuzufügen, hier ein Überblick über die verfügbaren Auto Switch Funktionen:

    • Adapter Description contains
      • Diese Funktion ermöglicht das wechseln des Proxies, sobald ein Netzwerk Adapter verfügbar wird, der den angegebenen Text enthält.
        Damit ist es möglich, einen proxy zu aktivieren, sobald z.B. eine UMTS Verbindung hergestellt wird. Den Namen des Adapters findet man raus, in dem man die Liste durchschaut, die Windows einem liefert, wenn man folgendes auf der Kommandozeile eingibt (ohne anführungszeichen): “ipconfig /all”
        Dort ausschau halten nach “Beschreibung: MeinUMTSAdapter”
    • DNS Suffix contains
      • Diese Funktion ermöglicht das wechseln des Proxies, sobald eine Netzwerkverbindung existiert, die als DNS suffix den angegebenen Text enthält. Dies ist z.B. in Firmennetzwerken sinnvoll. Auch hier liefert “ipconfig /all” die aktuellen DNS suffixe.
    • Gateway contains
      • Diese Funktion ermöglicht das wechseln des Proxies, sobald eine Netzwerkverbindung existiert, die als Gateway Adresse den angegebenen Text enthält. Auch hier liefert “ipconfig /all” die aktuellen Gateway Adressen.
    • WLAN SSID contains
      • Diese Funktion ermöglicht das wechseln des Proxies, sobald eine Verbindung mit einem WLAN hergestellt wird, dessen Name den angegebenen Text enthält.
        Diese Funktion ist erst ab Windows Vista und folgende verfügbar.

    Proxy Switcher wurde erfolgreich mit Windows XP, Windows Vista und Windows 7 getestet.

    DOWNLOAD HIER

    ---------------------------

    Here is now some “documentation” about the available auto switching methods.

    • Adapter Description contains
      • This function allows switching the proxy, if a network adapter becomes available which contains the specified text as the description.
        So from now on, it is possible for example to activate a proxy for a UMTS connection. Search for the “Description: AdapterName” after executing “ipconfig /all” in a command line.
    • DNS Suffix contains
      • This function allows switching the proxy, if a network connection with the specified DNS suffix becomes available. See “ipconfig /all” for the current DNS suffixes.
    • Gateway contains
      • This function allows switching the proxy, if a network connection with the specified gateway address becomes available. See “ipconfig /all” for the current gateway addresses.
    • WLAN SSID contains
      • This function allows switching the proxy on connecting to a WLAN with the specified name.
        This method is ony available from Windows Vista or above.

    Proxy Switcher was successfully tested with Windows XP, Windows Vista and Windows 7.

    DOWNLOAD HERE