Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

SetWallpaper - помогите вставить картинку !!!   Найти похожие ветки 

 
312Kbps   (2005-09-08 01:49) [0]

SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол. Подскажите, пожалуйста, как мне вставить картинку не из файла, а из объекта TImage ???


 
DesWind ©   (2005-09-08 02:01) [1]

Откуда ты берешь картинку в TImage? Если сам рисуешь, то простейший путь, сохранить ее в файл и потом поставить.


 
312Kbps   (2005-09-08 02:07) [2]

Надо именно через объект !!!
Скажем, картинка в TImage появляется путем захвата рабочего стола !
Подаскажите )))


 
DesWind ©   (2005-09-08 02:14) [3]

Тебе обои нада поставить или рабочий стол перерисовать? ;)


 
312Kbps   (2005-09-08 02:22) [4]

Мне надо вставить картинку из объекта TImage, а не из файла !
Как это сделать ?


 
312Kbps   (2005-09-08 02:42) [5]

Ни кто не может мне подсказать, как это сделать ?


 
DesWind ©   (2005-09-08 02:44) [6]

Еще раз! Куда те ее надо вставить? ))))


 
312Kbps   (2005-09-08 02:46) [7]

Смена картинки рабочего стола
SetWallpaper("Имя файла",2)
Так вот мне вместо "Имени файла" надо подставить картинку из объекта TImage
Как ?


 
Defunct ©   (2005-09-08 02:48) [8]

312Kbps   (08.09.05 02:22) [4]

У тебя вызывает проблему сохранение изображения из TImage в файл?
тебе ж уже подсказали в [1] решение твоей задачи, причем самый простой.


 
Джо ©   (2005-09-08 02:50) [9]

Тебе придется смириться с мыслью, что функции SetWallpaper требуется именно имя файла.


 
312Kbps   (2005-09-08 02:51) [10]

Если изображение одно, то можно сохранить, а если будет идти поток картинок ! Без сохранения в файл, напрямую , как это сделать ???


 
312Kbps   (2005-09-08 02:53) [11]

Или как по другому заменить картинку на рабочем столе из TImage ?


 
Defunct ©   (2005-09-08 03:00) [12]

312Kbps   (08.09.05 02:51) [10]

Если будет поток, тогда и сохраняй поток.
Ты что там фильмы собираешься на рабочем столе крутить?


> Без сохранения в файл, напрямую , как это сделать

может ты имеешь в виду под "рабочим столом" экран?


 
DesWind ©   (2005-09-08 03:01) [13]

а если будет идти поток картинок

Тогда нада копать IActiveDesktop, вроде...


 
312Kbps   (2005-09-08 03:03) [14]

будет небольшой мониторинг на рабочем столе !


 
Defunct ©   (2005-09-08 03:05) [15]

312Kbps   (08.09.05 03:03) [14]

Гм.. тогда для чего нужен TImage?


 
DesWind ©   (2005-09-08 03:05) [16]

Defunct ©   (08.09.05 03:00) [12]

Есть такая штука - фильмы показывать как обои... Интересно смотриться...


 
312Kbps   (2005-09-08 03:06) [17]

(15) потому как туда будет передоваться изображение


 
DesWind ©   (2005-09-08 03:07) [18]

312Kbps   (08.09.05 03:03) [14]

Объясни толком, что нужно!


 
312Kbps   (2005-09-08 03:08) [19]

я ещё сам толком не знаю )))
Прмем как константу, что есть объект TImage из которого надо передать картинку на рабочий стол !


 
DesWind ©   (2005-09-08 03:10) [20]

Что такое "рабочий стол"?


 
Defunct ©   (2005-09-08 03:19) [21]

312Kbps   (08.09.05 03:08) [19]

Бредовая задача.
Зачем принимать как константу какую-то чушь. Ты сам подумай. TImage - компонент для отбражения картинок (не для хранения, и тем более не для формирования). Накой из него еще что-то куда-то передавать?


 
Antonn ©   (2005-09-08 04:43) [22]

312Kbps   (08.09.05 1:49)
SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол.

приведи содержимое SetWallpaper


 
IceBeerg ©   (2005-09-08 10:16) [23]

312Kbps   (08.09.05 3:03) [14]
будет небольшой мониторинг на рабочем столе !

Так создавай TImage в RunTime и родителем делай рабочий стол и рисуй на этом TImage все, что хочеш...
К сожалению примера не могу дать, был где-то пример как создать кнопку на рабочем столе, но его долго искать...


 
312Kbps   (2005-09-08 12:57) [24]

(23) Извени, но ты не мог бы мне пободдробней объяснить как это делается ? Спасибо !


 
IceBeerg ©   (2005-09-08 13:54) [25]

Вот, откопал pas файл от компонента:
unit APIButton;

interface

uses
Windows, Messages, Forms;

type
TAPIButton = class;
TButtonEvent = procedure(Sender: TAPIButton) of object;

TAPIButton = class
protected
  // varibles
  FHandle:THandle;
  FTop,FLeft,FWidth,FHeight:Integer;
  FMouseClick:TButtonEvent;
  OldWinProc,NewWinProc:Pointer;
  FMouse:Boolean;
  // for "Caption" property
  function GetCaption:string;
  procedure SetCaption(const Value: string);
  // for "Left" property
  procedure SetLeft(const Value: Integer);
  // for "Top" property
  procedure SetTop(const Value: Integer);
  // for "Width" property
  procedure SetWidth(const Value: Integer);
  // for "Height" property
  procedure SetHeight(const Value: Integer);
  // for "Visible" property
  function GetVisible:Boolean;
  procedure SetVisible(const Value: Boolean);
  // for "Enabled" property
  function GetEnabledB:Boolean;
  procedure SetEnabledB(const Value: Boolean);
  // for "Parent" property
  function GetParent:THandle;
  procedure SetParent(const Value: THandle);
  // for Windows Messages
  procedure msgUser(var Msg:TMessage);
published
  property Handle: THandle read FHandle default 0;
  property Caption:string read GetCaption write SetCaption;
  property Left:Integer read FLeft write SetLeft;
  property Top:Integer read FTop write SetTop;
  property Width:Integer read FWidth write SetWidth;
  property Height:Integer read FHeight write SetHeight;
  property Visible:Boolean read GetVisible write SetVisible;
  property Enabled:Boolean read GetEnabledB write SetEnabledB;
  property Parent:THandle read GetParent write SetParent;
  property OnMouseClick:TButtonEvent read FMouseClick write FMouseClick;
  procedure SetFocus;
  procedure SetBounds(ALeft,ATop,AWidth,AHeight: Integer);
  constructor Create(ParentControl: THandle);
  destructor UnCreate;
end;

implementation

{ TAPIButton }

constructor TAPIButton.Create(ParentControl: THandle);
begin
 FHandle:=CreateWindow("Button","APIButton",WS_VISIBLE or WS_CHILD,0,0,72,25,
             ParentControl,0,hInstance,nil);
 SendMessage(FHandle,WM_CREATE,0,0);
 FMouse:=GetSystemMetrics(SM_SWAPBUTTON) = 1;
 FLeft:=0;
 FTop:=0;
 FWidth:=72;
 FHeight:=25;
 NewWinProc:=MakeObjectInstance(msgUser);
 OldWinProc:=Pointer(SetWindowLong(FHandle,GWL_WNDPROC,Cardinal(NewWinProc)));
end;

destructor TAPIButton.UnCreate;
begin
 Visible:=False;
 SendMessage(FHandle,WM_DESTROY,0,0);
end;

function TAPIButton.GetCaption: string;
var
 Buf:string;
 L:Integer;
begin
 L:=GetWindowTextLength(FHandle) + 1;
 SetLength(Buf,L);
 GetWindowText(FHandle,PChar(Buf),L);
 Result:=PChar(Buf);
end;

function TAPIButton.GetEnabledB: Boolean;
begin
 Result:=IsWindowEnabled(FHandle);
end;

function TAPIButton.GetVisible: Boolean;
begin
 Result:=IsWindowVisible(FHandle);
end;

procedure TAPIButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
 FLeft:=ALeft;
 FTop:=ATop;
 FWidth:=AWidth;
 FHeight:=AHeight;
 SetWindowPos(FHandle, 0, ALeft, ATop, AWidth, AHeight,0)
end;

procedure TAPIButton.SetCaption(const Value: string);
begin
 SetWindowText(FHandle,PChar(Value));
end;

procedure TAPIButton.SetEnabledB(const Value: Boolean);
begin
 EnableWindow(FHandle,Value);
end;

procedure TAPIButton.SetFocus;
begin
 Windows.SetFocus(FHandle);
end;

procedure TAPIButton.SetHeight(const Value: Integer);
begin
 FHeight:=Value;
 SetWindowPos(FHandle,0,FLeft,FTop,FWidth,Value,0);
end;

procedure TAPIButton.SetLeft(const Value: Integer);
begin
 FLeft:=Value;
 SetWindowPos(FHandle,0,Value,FTop,FWidth,FHeight,0);
end;

procedure TAPIButton.SetWidth(const Value: Integer);
begin
 FWidth:=Value;
 SetWindowPos(FHandle,0,FLeft,FTop,Value,FHeight,0);
end;

procedure TAPIButton.SetTop(const Value: Integer);
begin
 FTop:=Value;
 SetWindowPos(FHandle,0,FLeft,Value,FWidth,FHeight,0);
end;

procedure TAPIButton.SetVisible(const Value: Boolean);
begin
 if Value then
    ShowWindow(FHandle,SW_SHOW)
 else
    ShowWindow(FHandle,SW_HIDE);
end;

function TAPIButton.GetParent: THandle;
begin
 Result:=Windows.GetParent(FHandle);
end;

procedure TAPIButton.SetParent(const Value: THandle);
begin
 Windows.SetParent(FHandle, Value);
end;

procedure TAPIButton.msgUser(var Msg: TMessage);
 procedure RaiseClick;
 var
    Pnt:TPoint;
 begin
    GetCursorPos(Pnt);
    if Assigned(FMouseClick) and (WindowFromPoint(Pnt) = FHandle) then
       FMouseClick(Self);
 end;
begin
 Msg.Result:=CallWindowProc(OldWinProc,FHandle,Msg.Msg,Msg.WParam,Msg.LParam);
 if not FMouse and (Msg.Msg = Wm_LButtonUp) then
    RaiseClick
 else if FMouse and (Msg.Msg = Wm_RButtonUp) then
    RaiseClick;
end;

end.

Попробуй сделать по аналогии...


 
312Kbps   (2005-09-08 14:07) [26]

Спасибо !


 
DesWind ©   (2005-09-08 14:09) [27]

У меня получилось так


function GetDesktopWindow: HWND; external "user32.dll";

......
Btn:=TButton.Create(Form1);
Btn.parent:=GetDesktopWindow;
............


 
312Kbps   (2005-09-08 14:34) [28]

Btn.parent:=GetDesktopWindow;

[Error] Unit1.pas(36): Incompatible types: "TWinControl" and "HWND"


 
DesWind ©   (2005-09-08 14:40) [29]

Ну обшибся малек Btn.ParentWindow:=....;



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.027 c
1-1126129760
312Kbps
2005-09-08 01:49
2005.10.02
SetWallpaper - помогите вставить картинку !!!


1-1126094591
lmz
2005-09-07 16:03
2005.10.02
Блок вставки из буфера обмена


1-1126171989
Lamka
2005-09-08 13:33
2005.10.02
Как получить dcu?


4-1123482878
Anonim
2005-08-08 10:34
2005.10.02
Проблема с OpenProcess


1-1125298217
IgorM
2005-08-29 10:50
2005.10.02
Создания архива