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!

Reklamy

4 myśli nt. „Wyszukiwanie w Menu Start a’la Vista

  1. 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.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s