Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Autorun

Автор: Dead.MorozZ 12.11.2005 23:41

Помогите создать Autorun в Делфи!!
Ответьте пожаловста на вопросы:
1. Как в Делфи 7.0 сделать так чтобы при загрузке формы начинала играть музыка?
2. Как сделать так чтобы при нажатии на кнопку открывался диск (сидюк)?

Автор: volvo 13.11.2005 0:15

To: Dead.MorozZ
1. Поставь в OnCreate формы:

PlaySound('test.wav', 0, SND_FILENAME)

2.
MciSendString('Set cdaudio door open', 0,0,form1.handle);

Автор: Dead.MorozZ 13.11.2005 0:21

Спасибо!!
А для воспроизведения музыки Дельфи никаких компонентов не надо??
И еще.. Че параметры означают в обеих прогах??

Автор: volvo 13.11.2005 0:50

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_playsound.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_mcisendstring.asp

Это функции WinApi, компоненты не нужны...

Автор: Dead.MorozZ 13.11.2005 1:04

А где и как их идентифицировать??

Автор: volvo 13.11.2005 1:17

Цитата
А где и как их идентифицировать??

blink.gif

Uses Windows, mmSystem, ... 

если эти 2 модуля подключены, все должно работать...

Автор: Dead.MorozZ 13.11.2005 1:31

Объясни что значит SND_FILENAME, а то я в англицком не секу и те ссылки, которые ты мне дал оказались бесполезными

Автор: volvo 13.11.2005 1:39

Цитата
что значит SND_FILENAME

Это говорит системе, что переданная первым параметром строка является именем Sound-файла (в смысле, звукового wink.gif )

Автор: Dead.MorozZ 13.11.2005 1:49

А по второй проге конфуз вышелsmile.gif)
Я просто не граммотно выразилсяsmile.gif мне надо было диск(CD-Rom) открыть как папку, а не то чтоб мне сам сидюк вылазил. Но все равно вещь полезная! Спасибо!
Может и поможешь и с той прогой, которую мне действительно надо?? PlzZ:)

Автор: volvo 13.11.2005 2:03

Ну, тогда попробуй просто

WinExec('explorer F:\', SW_SHOW);
(вместо F поставь букву своего CD-ROMа)

Автор: Dead.MorozZ 13.11.2005 2:10

А если я не знаю букву СД-рома (я же все-таки Autorun пытаюсь писать, должно быть универсальноsmile.gif

Автор: volvo 13.11.2005 2:13

Тогда качай DRKB отсюда http://www.drkb.ru/ и читай статью "Как узнать букву CD-ROM?"

Кстати, скачать надо в любом случае, там ОЧЕНЬ много полезной информации...

Автор: Dead.MorozZ 13.11.2005 2:23

Слушай, а почему у меня такой странный глюк blink.gif
Запускаю екзешник с этой лабудой. Сначала играет музыка, на середине останавливается и только после этого показывается форма. А мне бы чтоб это одновременно как-то. PlzZ

Автор: Dead.MorozZ 13.11.2005 18:46

И еще такой вопрос: Как музыку остановить в определенный момент??

Автор: klem4 13.11.2005 19:11

Вот для midi нашел в ДРКБ :

uses  
MMSystem;

// Play Midi
procedure TForm1.Button1Click;
const
FileName = 'C:\YourFile.mid';
begin
MCISendString(PChar('play ' + FileName), nil, 0, 0);
end;

// Stop Midi
procedure TForm1.Button1Click;
const
FileName = 'C:\YourFile.mid';
begin
MCISendString(PChar('stop ' + FileName), nil, 0, 0);
end;

Автор: Dead.MorozZ 14.11.2005 0:23

Я вообщем нашел DRKB как узнать адресс, по которому "прживает" ЕХЕшник
Application.ExeName. Но как открыть папку с этим адрессом?? Предложенный Volvo способ ( WinExec('explorer FileName' SW_SHOW) ) не катит во всяком случае у меня не получается. Подскажите как, smile.gif или я че-то не то делаю rolleyes.gif

Автор: volvo 14.11.2005 0:30

To: Dead.MorozZ
Ты что, хочешь программу саму из себя запускать? Зачем тебе Application.ExeName?

Автор: Dead.MorozZ 14.11.2005 0:46

Мне надо найти адресс папки, в которой лежит ЕХЕшник unsure.gif

Автор: volvo 14.11.2005 1:08

Цитата
Мне надо найти адресс папки, в которой лежит ЕХЕшник

ExtractFilePath(ParamStr(0)) не пробовал?

Автор: Dead.MorozZ 14.11.2005 1:16

Попробывал но че-то оброботчик события вообще теперь никак не реагирует. Может чего с параметрами напутал. Может объяснишь что-куда (параметры имелось ввиду)

Автор: volvo 14.11.2005 1:23

WinExec('explorer ' + ExtractFilePath(ParamStr(0)), SW_SHOW);


Только учти, что ЭТО будет работать, когда программа будет запускаться с CD, если ты ее запускаешь с харда - будет открыта та папка, из которой производился запуск...

Автор: Dead.MorozZ 14.11.2005 1:27

Да я, собственно так и делал. Компилятор пишет что-то вроде не соответствие типов
String & PAnsiChar

Автор: volvo 14.11.2005 1:33

Ну, так в чем дело? Типы приводить не умеешь?

  WinExec(pchar('explorer ' + ExtractFilePath(ParamStr(0))), SW_SHOW);

Автор: Dead.MorozZ 14.11.2005 1:39

О!! Спасибо большое, все работает!! Так гораздо лучше!!
И все равно не понятно, почему сначала играет музыка, а потом появляется форма.
Можно как-нибудь, чтоб одновременно происходило??

Автор: Atreides 18.04.2006 23:48

Я тут хочу создать свой авторан на диск. Как задать кнопку обзора CD, что бы при нажатии открывался CD. Как сделать кнопку Извлечь CD и Поиска, которая при нажатии выводит окно для ввода текста, и ведет поиск по имени файла? Как сделать такое окошко, в котором бы отображалась вся структура (дерево) CD? И при двойном клике, на какую либо папку открывалась папка? Какого размера нужно использовать иконки для присвоения её диску? И где достать архивчик таких картинок?

Автор: Dead.MorozZ 19.04.2006 16:53

Цитата
Как задать кнопку обзора CD, что бы при нажатии открывался CD

volvo пишет:
Цитата
WinExec(pchar('explorer ' + ExtractFilePath(ParamStr(0))), SW_SHOW);


Цитата
Как сделать кнопку Извлечь CD

Цитата
MciSendString('Set cdaudio door open', 0,0,form1.handle); 


Цитата
Как сделать такое окошко, в котором бы отображалась вся структура (дерево) CD?

Можно при помощи DirectoryListBox на вкладке Win3.1

Цитата
Какого размера нужно использовать иконки для присвоения её диску? И где достать архивчик таких картинок?

Размером 32 x 32 или 72 x 72. Можно нарисовать самому в Delphi или Painte

Автор: Atreides 20.04.2006 23:15

Цитата
WinExec(pchar('explorer ' + ExtractFilePath(ParamStr(0))), SW_SHOW);

Цитата
MciSendString('Set cdaudio door open', 0,0,form1.handle);

Я пробовал это прописывать, постоянно на них ошибка выпрыгивает.

Автор: Atreides 21.04.2006 0:17

С обзором диска разобрался, а вот извлечение глючит: [Error] Unit1.pas(74): Undeclared identifier: 'MciSendString' and [Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

А как сделать, что бы DirectoryListBox видел архивы и графические расширения? Как можно реализовать кнопку копирования, а если выбранный файл архив то распаковывание во введенную директорию, вводимую в Edit?

Автор: volvo 21.04.2006 0:19

Цитата(Atreides @ 20.04.2006 20:17)
извлечение глючит: [Error] Unit1.pas(74): Undeclared identifier: 'MciSendString' and [Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

Uses ...,  MMSystem;

делал? Я же писАл об этом в посте №6...

Автор: Atreides 21.04.2006 0:37

О всё теперь работает! Спасибо!

Автор: hardcase 21.04.2006 1:01

Господи! DirectoryListBox! Где вы такую древность раскопали. Это компоненты со вкладки Win3.1 - вдумайтесь в это слово! Win 3.1!

Нормальные люди используют Shell контролы для работы с оболочкой: TShellTreeView, TShellListView и др. Они кажется на Samples лежат

Автор: Atreides 22.04.2006 16:06

Как добавить в поле типа Memo кнопку прокручивания списка вниз. И как этот скролл называется? Как задать полоске текста типа Label, что бы при достижение текстом конца заданной рамки он автоматически переносился на новую строку, а не продолжал ползти за границу рамки?

Автор: Dead.MorozZ 23.04.2006 23:08

Цитата
Как добавить в поле типа Memo кнопку прокручивания списка вниз. И как этот скролл называется?

Свойство ScrollBars у Memo.
Цитата
Как задать полоске текста типа Label, что бы при достижение текстом конца заданной рамки он автоматически переносился на новую строку, а не продолжал ползти за границу рамки?

Свойство WordWrap присвой True.

Автор: Atreides 27.04.2006 0:49

Как сделать, так что бы окно нельзя было менять в размере, растягивать?

Автор: volvo 27.04.2006 0:55

Установить форме BorderStyle в bsSingle

Ну и максимизацию отключить:
BorderIcons -> biMaximize установить в False