Jak uruchomić okno "Typy plików"?

Odpowiedz Nowy wątek
2006-08-11 10:39
Ad
0

Jak uruchomić okno z typami plików (oczywiście w programie napisanym w Delphi :-D )?
//Start | Ustawienia | Panel Sterowania | Opcje folderów | Typy plików
Jak próbuję:

ShellExecute(0,'open','control','folders',nil,SW_SHOW);

to pojawia mi się na zakładce Ogólne, a chcę na Typy plików, czyli:
user image

Podpatrzyłem w kilku wątkach (a nawet zadałem pytanie, tyle że nikt nie odpowiedział :-[ ), że aby otworzyć konkretną zakładkę trzeba dodać jeszcze np ",2", ale w tym wypadku nie działa. Ktoś wie?

//EDIT: Da się?


Pozostało 580 znaków

2006-08-16 16:27
Ad
0

Anyone?


Pozostało 580 znaków

2006-08-16 17:00
Opi
0

Naokoło, ale udało się...

uses ShellApi;
 
procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
type
  TShiftKeyInfo = record
                   shift: Byte;
                   vkey: Byte;
                   end;
 ByteSet = set of 0..7;
const
 shiftkeys: array [1..3] of TShiftKeyInfo = ((shift: Ord(ssCtrl); vkey: VK_CONTROL), (shift: Ord(ssShift); vkey: VK_SHIFT),(shift: Ord(ssAlt); vkey: VK_MENU));
var
 flag: DWORD;
 bShift: ByteSet absolute shift;
 j: Integer;
begin
 for j := 1 to 3 do
   begin
    if shiftkeys[j].shift in bShift then keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), 0, 0);
   end;
 
 if specialkey then flag := KEYEVENTF_EXTENDEDKEY
 else flag := 0;
 
 keybd_event(key, MapvirtualKey(key, 0), flag, 0);
 flag := flag or KEYEVENTF_KEYUP;
 keybd_event(key, MapvirtualKey(key, 0), flag, 0);
 
 for j := 3 downto 1 do
   begin
    if shiftkeys[j].shift in bShift then keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), KEYEVENTF_KEYUP, 0);
   end;
end;
 
function OknoIstnieje(Nazwa: string): Boolean;
var
 txt: THandle;
begin
 Result := False;
 txt := FindWindow(nil, pchar(Nazwa));
 if txt <> 0 then Result := True;
end;

Wykorzystanie w/w funkcji

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 ShellExecute(Handle, 'open', 'control', 'folders', nil, SW_SHOW);
 while OknoIstnieje('Opcje folderów') = False do
   begin
    Application.ProcessMessages;
    if OknoIstnieje('Opcje folderów') = True then
      begin
       for i := 0 to 5 do PostKeyEx32(VK_TAB, [], False);
       Application.ProcessMessages;
       PostKeyEx32(VK_RIGHT, [], False);
       PostKeyEx32(VK_RIGHT, [], False);
      end;
   end;
end;

Pozostało 580 znaków

2006-08-16 17:22
Ad
0

Klikanie na klawisz TAB? Super...
Nie da się inaczej?


Pozostało 580 znaków

2006-08-16 19:42
Opi
0
Ad napisał(a)

Klikanie na klawisz TAB? Super...
Nie da się inaczej?

Jakoś nikt więcej nie ma pomysłów od 5 dni..., więc ciesz się z tego co otrzymałeś :>
A domyślam się, że nawet nie sprawdziłeś kodu w praktyce.

Pozostało 580 znaków

2006-09-04 11:44
Ad
0

Sprawdziłem, nie działa...


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0