Wyszukiwanie w Menu Start a’la Vista

Ostatnim razem kiedy otworzyłem sobie menu Start->All Programs cały ekran został zasłonięty przez kilkukolumnową listę programów, które mam zainstalowane na dysku. Nie trudno się domyślić, że znalezienie jakiegoś programu w tym bałaganie graniczy z cudem. Nawet jeśli dane są posortowane to i tak niewiele daje ponieważ nie zawsze wiemy na jaką literę zaczyna się folder zawierający interesujący nas program.

Zatęskniłem wtedy do cudownego rozwiązania z systemu Windows Vista, w którym po wciśnięciu przycisku Start wystarczy wpisać jakąś frazę, a on znajdzie nam w mgnieniu oka żądany program. Kluczową sprawą w takim wyszukiwaniu jest aby fraza była wyszukiwana w nazwie pliku w taki sposób, że użytkownik pamiętając jakąś tylko którąkolwiek część tej nazwy może otrzymać to czego oczekuje. Takie wyszukiwanie można przeprowadzić z pomocą wyrażenia regularnego: “.*fraza.*”.

Menu Search v1.0Pomyślałem, że fajnie byłoby stworzyć program, który działałby na podobnej zasadzie. Postanowiłem ograniczyć wyszukiwanie tylko do menu Start. Po decyzji o napisaniu programu pozostaje oczywiście wybór narzędzia, którego użyję. Do wyboru miałem trzy: Microsoft Visual C++ 2008 Express Edition, Borland C++ Builder, oraz Microsoft Visual C# 2008 Express Edition. Dodatkowo MSVC++2k8EE znam, ale programowanie okienek w nim jakoś mi nie leży. BCB jest fajne do tworzenia programów, ale ma niesamowicie ubogie możliwości. Pozostał więc MSVC#2k8EE. Tutaj sprawa też nie miała się najlepiej ponieważ w życiu nie napisałem nic porządnego w C#. Nie byłem pewien czy dam radę, ale postanowiłem sprawdzić. W końcu jeden nieukończony projekt w tą czy w tą to i tak bez różnicy przy tak dużej ich liczbie (tych nieskończonych) ;)

Po kilku godzinach kodowania, przeszukiwania internetu i maksymalnego wykorzystania inwencji twórczej, powstał program, który można już przedstawić. Nie działa on jeszcze w pełni poprawnie, ale większość jest.

Jak wiadomo - w menu Start znajdują się głównie linki do programów, a nie same programy. Jest to pewien problem ponieważ, z linków trzeba było jakoś wydobyć informację na temat tego co pokazuje. Na szczęście w C# okazało się to być całkiem proste. Jednak nie zawsze jest tak fajnie. Większość plików i programów działa bez zarzutu, jednak niektóre z nich nie chcą się uruchomić w ten sposób, a inne pokazują okienko o błędzie i możliwości wysłania tegoż do MS.

Uruchamianie realizowane jest przez taki kod:

WshShellClass wshShell = new WshShellClass();
IWshShortcut link = (IWshShortcut)wshShell.CreateShortcut(filePath);

//wshShell.Exec(link.TargetPath);
System.Diagnostics.Process.Start(link.TargetPath, link.Arguments);

Rozwiązanie z Process.Start() działa również dla plików nie będących plikami wykonywalnymi. Po prostu pliki uruchamiane są w domyślnych programach. Problem pojawia się ze skrótem do znanego programu Skype, który jako TargetPath ma taki oto ciąg:

C:\WINDOWS\Installer\{5C82DAE5-6EB0-4374-9254-BE3319BA4E82}\Skype.ico

Widocznie jest to jakiś inny rodzaj linku ponieważ, kiedy sprawdzam właściwości skrótu w miejscu Target okienko adresu jest nieaktywne i wpisane jest tam jedynie Skype 3.6.

Nie mam pojęcia w jaki sposób sobie z tym poradzić niestety.

 BTW:  Jaką piękną mamy wiosnę! Chyba zaraz pójdę na sanki!

Napisane w Programowanie.

Odpowiedzi: 4 do “Wyszukiwanie w Menu Start a’la Vista”

  1. Kurak mówi:

    Kolejny człowiek opisujący na blogu swój pierwszy raz z .net ;)

  2. moriturius mówi:

    .NET nie jest zle. Calkiem fajnie szybko sie w tym pisze ^^
    Ale poki co daleko mi do bieglosci w tej kwestii ;)

  3. Zed mówi:

    Ale przecież można uruchomić skrót tak jakby on był zwykłym programem!

    Czyli:
    System.Diagnostics.Process.Start(@”C:\Documents and Settings\All Users\Menu Start\Programy\Safari.lnk”);
    Też zadziała i wtedy nie ma problemu z dziwnymi skrótami.

  4. moriturius mówi:

    @Zed: faktycznie! Pomoglo na skype, ale Imagicon nadal sie wywala przy probie wlaczenia.

Napisz odpowiedź