Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2012, 14:59   #1
Borodkin
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию вопрос по ShellExecute

уважаемые специалисты!

у меня вопрос: при
ShellExecute(Form1.Handle,nil,'прог рамма_в_делфи.exe', nil, nil,SW_HIDE);
почему то не срабатывает команда SW_HIDE, т.е. окно визуально видно.

В задачу входит запускать приложение, но при этом оставлять его невидимым.

Что предпринимал:

1. т.к. вызываемая программа тоже написана в Делфи7, убрал все ограничения на изменения рабочей формы
2. менял SW_HIDE на integer-эквивалент (в частности, SW_HIDE = 0)
3. из всех возможных вариантов срабатывает только (SW_MAXIMIZE).

Что с этим делать?
спасибо ))
Borodkin вне форума Ответить с цитированием
Старый 22.02.2012, 15:08   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А если так попробывать?
ShellExecute(0,'open','прог рамма_в_делфи.exe', nil, nil,SW_HIDE);
FaTaL вне форума Ответить с цитированием
Старый 22.02.2012, 17:08   #3
Borodkin
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А если так попробывать?
ShellExecute(0,'open','прог рамма_в_делфи.exe', nil, nil,SW_HIDE);
тоже самое ((
Borodkin вне форума Ответить с цитированием
Старый 22.02.2012, 17:21   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Кинь свою прог рамма_в_делфи.exe проверю.
FaTaL вне форума Ответить с цитированием
Старый 22.02.2012, 17:41   #5
Borodkin
 
Регистрация: 22.02.2012
Сообщений: 3
По умолчанию

Код:
unit ChartMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, ExtDlgs, StdCtrls,
  Buttons;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    SavePictureDialog1: TSavePictureDialog;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Bmp: TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
var
  k: Integer;
begin
  for k := 0 to 20 do
    Chart1.SeriesList[0].AddXY(k,sin(k*pi/10),'',clRed);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var Bmp: TBitmap;
begin
Bmp:=TBitmap.Create;
Bmp.Width := Chart1.Width; //
Bmp.Height := Chart1.Height;
Chart1.Draw(Bmp.Canvas,Rect(0,0,Chart1.Width,Chart1.Height)); //If not SavePictureDialog1.Execute then Exit;
Bmp.SaveToFile(SavePictureDialog1.FileName); //
end;
end.
ну так что делать, подскажите плиз! ))

Последний раз редактировалось Stilet; 26.02.2012 в 11:16.
Borodkin вне форума Ответить с цитированием
Старый 06.04.2012, 13:10   #6
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

как объявить ShellExecute без подключения модуля "shellapi"?
я это уже раньше делал, но забыл как, а исходник походу удалил
Код:
const
shell32 = 'Shell32.dll';
............
function ShellExecute(hWnd: HWnd; Operation : pansichar; FileName : pansichar;
           Parameters : pansichar; Directory: PansiChar; ShowCmd: Integer): cardinal;
           external Shell32 name 'ShellExecuteA'; // stdcall;
делаю так - компилится и запускается, но прога падает при обращении к функции.
что я забыл или пропустил?
-------------
чьёртъ побъери!
разобрался. stdcall не туда сунул!
Код:
const
shell32 = 'Shell32.dll';
............
function ShellExecute(hWnd: HWnd; Operation : pansichar; FileName : pansichar;
           Parameters : pansichar; Directory: PansiChar; ShowCmd: Integer): cardinal; stdcall;
           external Shell32 name 'ShellExecuteA';
извиняюсь за флуд. сообщение можно удалить.
p.s.
а вообще, раз уж пошла ботва, результат какого типа возвращает функция ShellExecute - Cardinal, thandle или что?
в интернете везде пишут по-разному. Какой из них правильный?

Последний раз редактировалось BLACK_RAIN; 06.04.2012 в 13:25. Причина: дописка
BLACK_RAIN вне форума Ответить с цитированием
Старый 06.04.2012, 13:54   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поидее THandle, но он помоему то же что и Cardinal.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ShellExecute -Jack- Win Api 2 01.12.2011 01:58
Вопрос по ShellExecute Sti.k Общие вопросы Delphi 6 14.05.2010 11:25
Вопрос по ShellExecute SANIOK_AV Общие вопросы Delphi 6 17.04.2009 12:10
Вопрос по ShellExecute. Vi_russ Общие вопросы Delphi 1 08.12.2008 12:11
Проблема с Mediaplayer'ом и вопрос про ShellExecute Шани Компоненты Delphi 2 22.07.2008 18:57