Автор Тема: Самые интересные вопросы и их решения.  (Прочитано 7054 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AdminFlash

  • Администратор
  • Титулярный советник
  • *****
  • Сообщений: 108
  • Репутация: 2
  • Пол: Мужской
Вопрос: Как добавить кнопку в панель инструментов IE?

Решение
1. ButtonText = Всплывающая подсказка к кнопке
2. MenuText = Текст, который будет использован для пункта в меню "Сервис"
3. MenuStatusbar = *Ignore*
4. CLSID = Ваш уникальный classID. Для создания нового CLSID (для каждой кнопки) можно использовать GUIDTOSTRING.
5. Default Visible := Показать ей.
6. Exec := Путь к Вашей программе или URL
7. Hoticon := иконка из shell32.dll когда мышка находится над кнопкой
8. Icon := иконка из shell32.dll

Внимание! Не забудьте подключить модуль Registry!
Код: (delphi) [Выделить]
procedure CreateExplorerButton;
const
TagID = '\{10954C80-4F0F-11d3-B17C-00C0DFE39736}\';
var
Reg: TRegistry;
ProgramPath: string;
RegKeyPath: string;
begin
ProgramPath := 'c:\folder\exename.exe';
Reg := TRegistry.Create;
try
with Reg do begin
 RootKey := HKEY_LOCAL_MACHINE;
 RegKeyPath := 'Software\Microsoft\Internet Explorer\Extensions';
 OpenKey(RegKeyPath + TagID, True);
 WriteString('ButtonText', 'Your program Button text');
 WriteString('MenuText', 'Your program Menu text');
 WriteString('MenuStatusBar', 'Run Script');
 WriteString('ClSid', '{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}');
 WriteString('Default Visible', 'Yes');
 WriteString('Exec', ProgramPath);
 WriteString('HotIcon', ',4');
 WriteString('Icon', ',4');
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;

Вопрос: Как перевести имена всех файлов и подкаталогов со соим содержимым определенного каталога в нижний регистр?
Ответ: Код процедуры, отвечающей за поиск и переименование файлов:
Код: (delphi) [Выделить]
procedure DoIt(const Dir: string);
var SR: TSearchRec;
begin
 SetCurrentDir(Dir);
 if FindFirst(Dir + '*.*', faAnyFile, SR) = 0 then
 begin
   repeat
     if (SR.Name <> '.') and (SR.Name <> '..') then
     begin
       RenameFile(SR.Name, AnsiLowerCase(SR.Name));
       if (SR.Attr and faDirectory) <> 0 then
         DoIt(Dir + SR.Name + '\');
     end;
   until FindNext(SR) <> 0;
 FindClose(SR);
 end;
end;

Вопрос: Как создать мигающий заголовок окна (пиктограмму)?
Ответ: Можно воспользоваться функцией API FlashWindow():

Код: (delphi) [Выделить]
var Flash : bool;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 FlashWindow(Form1.Handle, Flash);
 FlashWindow(Application.Handle, Flash);
 Flash := not Flash;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Flash := False;
end;

Вопрос: Как узнать число кадров AVI файла, и выяснить как долго будет проигрываться этот файл?

Код: (delphi) [Выделить]
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.TimeFormat := tfFrames;
ShowMessage('Number of frames = ' + IntToStr(MediaPlayer1.Length));
MediaPlayer1.TimeFormat := tfMilliseconds;
ShowMessage('Number of milliseconds = ' + IntToStr(MediaPlayer1.Length));
end;