Консультация № 67747
19.12.2006, 21:10
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты. С Наступающим Новым Годом. У меня такая проблема: в WinAPI есть функция shellexecute(). В последнем агрументе надо указывать режим запуска, который выбирается из из констант SW_. Но почему то при любой константе приложение запускается как SW_SHOWNORMAL. Что делать? и есть ли в Делфи какая нибудь аналогичная функция, которая может служить альтернативой?
Заранее спасибо.

Обсуждение

Неизвестный
19.12.2006, 22:35
общий
это ответ
Здравствуйте, Алескандр!

Я советую вам ещё раз внимательно ознакомиться с режимами открытия файлов, возможно, что вы что-то не совсем поняли.

ShowCmd Определяет, режим открытия указанного файла. Этот параметр может иметь значения:

SW_HIDE Окно делается невидимым и фокус передается другому окну.
SW_MINIMIZE Свертывает (минимизирует) указанное окно и активизирует следующее в Z-последовательности окно верхнего уровня в списке системы.
SW_MAXIMIZE Развертывает (максимизирует) указанное окно.
SW_RESTORE Активизирует и отображает окно. Если это окно свернуто или развернуто, то оно восстанавливается до своих первоначальных размеров и отображается в первоначальной позиции (почти то же самое, что SW_SHOWNORMAL).
SW_SHOW Активизирует и отображает окно в его текущей позиции и с текущими размерами.
SW_SHOWDEFAULT Только для Windows 95 и NT. Устанавливает состояние в соответствии с флагом SW_ в структуре STARTUPINFO, передаваемой в функцию CreateProcess программой, запускающей приложение. Приложение должно вызывать ShowWindow с этим флагом, чтобы задать начальное состояние своего главного окна.
SW_SHOWMAXIMIZED Активизирует и отображает окно в развернутом виде (максимизированном).
SW_SHOWMINIMIZED Активизирует и отображает окно в свернутом виде (в виде пиктограммы).
SW_SHOWMINNOACTIVE Отображает окно в свернутом виде (в виде пиктограммы). Активным остается то окно, которое было активным до этого.
SW_SHOWNA Отображает окно в его текущей позиции и с текущими размерами. Активным остается то окно, которое было активным до этого.
SW_SHOWNOACTIVATE Отображает окно в его последней позиции и с последними размерами. Активным остается то окно, которое было активным до этого.
SW_SHOWNORMAL Активизирует и отображает окно. Если это окно свернуто или развернуто, то оно восстанавливается до своих первоначальных размеров и отображается в первоначальной позиции (почти то же самое, что SW_RESTORE).

Ниже прилагается пример всех режимов - сверяйте,может у вас где-то ошибка.

Удачи!


Приложение:
unit Unit1;interfaceuses ShellApi,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button12Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_HIDE);end;procedure TForm1.Button2Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_MINIMIZE);end;procedure TForm1.Button3Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_MAXIMIZE);end;procedure TForm1.Button4Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_RESTORE);end;procedure TForm1.Button5Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOW);end;procedure TForm1.Button6Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWDEFAULT);end;procedure TForm1.Button7Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWMAXIMIZED);end;procedure TForm1.Button8Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWMINIMIZED);end;procedure TForm1.Button9Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWMINNOACTIVE);end;procedure TForm1.Button10Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWNA);end;procedure TForm1.Button11Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_SHOWNOACTIVATE);end;procedure TForm1.Button12Click(Sender: TObject); var Ar:array[0..254] of char;begin StrPCopy(Ar, ‘C:\Program Files\WinRAR\Rar.txt‘); ShellExecute(Handle,nil,Ar,nil,nil,SW_NORMAL);end;end.
Неизвестный
20.12.2006, 07:56
общий
это ответ
Здравствуйте, Алескандр!

Есть аналогичная функция, называеться WinExec

WinExec(pchar(FileName), Flag_of_windows_style);
но в ней опять-же используются флаги стиля виндовса (SW_),

есть ExecProgram:
ExecProgram("command-line", display-state)

Display-state=
Value Meaning
0 Normal
1 Minimized
2 Maximized

Help: Windows SDK
Форма ответа