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

Вниз

Change wallpaper! Help   Найти похожие ветки 

 
pioli   (2013-01-25 18:38) [0]

Прога должна менять обои на рабочем столе, в delphi полный ноль

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComObj, ShlObj;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 ActiveDesktop: IActiveDesktop;
 hDesc:HRESULT;
    begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActive Desktop,ActiveDesktop);
if not Failed(hDesc) then

begin  
ActiveDesktop.SetWallpaper(D:\0.bmp, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

Ошибки:
 [Error] Unit1.pas(19): Statements not allowed in interface part
 [Error] Unit1.pas(20): Undeclared identifier: "CoCreateInstance"
 [Error] Unit1.pas(20): Undeclared identifier: "CLSCTX_INPROC_SERVER"
 [Error] Unit1.pas(20): Undeclared identifier: "IID_IActiveDesktop"
 [Warning] Unit1.pas(24): Unsafe type "PChar"
 [Error] Unit1.pas(28): Statement expected but end of file found
 [Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"

Что я не так делаю помогите , пожалуйста


 
Rouse_ ©   (2013-01-25 19:13) [1]


> Что я не так делаю

Все, кнопку на форме размести, два раза по ней щелкни, в появившемся обработчике вбей свой код начиная с ActiveDesktop: IActiveDesktop;


 
pioli   (2013-01-25 19:26) [2]


> Все, кнопку на форме размести, два раза по ней щелкни, в
> появившемся обработчике вбей свой код начиная с ActiveDesktop:
>  IActiveDesktop;

Можно ли как-нибудь без формы и кнопок и вооще чтобы никаких окон,уведомлений не вылазило обойтись, а рисунок через параметр передать при запуске?


 
Rouse_ ©   (2013-01-25 19:36) [3]

Консольное приложение напиши.


 
pioli   (2013-01-25 19:52) [4]

нужно именно через ActiveDesktop
и как консольное приложение написать? можно поподробней пожалуйста?


 
Rouse_ ©   (2013-01-25 19:56) [5]

Новый проект -> консольное приложение


 
pioli   (2013-01-25 20:04) [6]

Чего-то не получается. Undeclared identifier: "ActiveDesktop" в чем проблема?

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils, ComObj, ShlObj;

begin
  ActiveDesktop: IActiveDesktop;
 hDesc:HRESULT;
    begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActive  Desktop,ActiveDesktop);
if not Failed(hDesc) then

begin
ActiveDesktop.SetWallpaper(D:\0.bmp, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
end.


 
Rouse_ ©   (2013-01-25 20:11) [7]

var
 ActiveDesktop: IActiveDesktop;
 hDesc:HRESULT;
begin
 hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
   CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
 if Succeeded(hDesc) then
 begin
   ActiveDesktop.SetWallpaper("D:\0.bmp", 0);
   ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
 end;


а вообще зачем ты за это взялся если программировать не умеешь?


 
pioli   (2013-01-25 20:32) [8]

Теперь ошибок не выдает, но и обоину не менят
я так понимаю, надо как-то использовать эти две строчки или поправить чтобы все заработало? Недолжно ли вместо "D:\0.bmp" стоять чтонить другое?

{$APPTYPE CONSOLE}
ActiveDesktop.SetWallpaper("D:\0.bmp", 0);

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils, Windows, Messages, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComObj, ShlObj, ActiveX;

var
 ActiveDesktop: IActiveDesktop;
 hDesc:HRESULT;
begin
 hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
   CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
 if Succeeded(hDesc) then
 begin
   ActiveDesktop.SetWallpaper("D:\0.bmp", 0);
   ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
 end;
   end.


 
Rouse_ ©   (2013-01-25 20:34) [9]

Ну а дальше читай справку: http://msdn.microsoft.com/en-us/library/bb776357(v=vs.85).aspx


 
pioli   (2013-01-25 20:37) [10]

И на этом Огромное человеческое СПАСИБО!


 
pioli   (2013-01-25 21:24) [11]

Невыполняется условие if then? окно мелькает, но действие во втором begin не происходит, в чем проблема?

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils, Windows, Messages, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComObj, ShlObj, ActiveX;

var
 ActiveDesktop: IActiveDesktop;
 hDesc:HRESULT;
begin
 hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
   CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);
 if Succeeded(hDesc) then
 begin

   ActiveDesktop.SetWallpaper("d:/0.bmp", 0);
   ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
 end;

        end.


 
MBo ©   (2013-01-25 22:52) [12]

>Невыполняется условие if then?
Поставь точку останова (слева от кода) и проверь значение при отладке


 
pioli   (2013-01-26 09:17) [13]

Дело в том, что

hDesc := CoCreateInstance(CLSID_ActiveDesktop, nil,
   CLSCTX_INPROC_SERVER, IActiveDesktop, ActiveDesktop);

неработает, из-за чего может быть(windows&)?


 
brother ©   (2013-01-26 11:33) [14]

> неработает,

как именно?


 
pioli   (2013-01-26 11:38) [15]

по идеи hDesc должен возвращать Succeeded, но эор этого не делает, соответственно begin не выполняется и программа завершается


 
brother ©   (2013-01-26 11:46) [16]

http://www.programmersforum.ru/showthread.php?t=213315


 
brother ©   (2013-01-26 11:48) [17]

uses
 ShlObj, ActiveX;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 AD: IActiveDesktop;
 HR: HResult;
begin
 CoInitialize(nil);
 HR := CoCreateInstance(CLSID_ActiveDesktop, nil, CLSCTX_INPROC_SERVER,
IActiveDesktop, AD);
 if Succeeded(HR) then begin
   HR := AD.SetWallpaper(PWideChar(WideString("c:\some.bmp")), 0);
   HR := AD.ApplyChanges(AD_APPLY_ALL);
 end;
 CoUninitialize
end;


 
pioli   (2013-01-26 11:49) [18]

ActiveDesktop.SetWallpaper("d:/0.bmp", 0);
   ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);

ActiveDesktop просто не хочет работать(, программа вылетает
может на windows 7 вообще нет это функции?


 
brother ©   (2013-01-26 11:49) [19]

> программа вылетает

что это значит?


 
pioli   (2013-01-26 11:51) [20]

консольное окно пустое появляется и неотвечает зависает


 
brother ©   (2013-01-26 11:53) [21]

только что проверил [17] все работает!


 
pioli   (2013-01-26 11:54) [22]

На какой оси?


 
brother ©   (2013-01-26 11:59) [23]

w7x64 d7


 
pioli   (2013-01-26 12:01) [24]

Проверил [17]

[Warning] Project1.dpr(10): File not found: "Project1.dfm"
[Error] Project1.dpr(12): ";" expected but "." found
[Warning] Project1.dpr(21): Unsafe type "PWideChar"
[Error] Project1.dpr(27): Declaration expected but end of file found


 
pioli   (2013-01-26 12:09) [25]

Можно ли както без форм обойтись?


 
pioli   (2013-01-26 12:36) [26]

ААААА!! _brother_ огромное тебе спасибо, все разобрался, всё работает))



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

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

Наверх




Память: 0.53 MB
Время: 0.008 c
15-1367688703
brother
2013-05-04 21:31
2013.10.20
проблеммы GDI?


15-1367958603
Юрий
2013-05-08 00:30
2013.10.20
С днем рождения ! 8 мая 2013 среда


2-1359315203
Den
2013-01-27 23:33
2013.10.20
Delphi 2010, Surround, region, shortcut?


15-1367589979
Jambo
2013-05-03 18:06
2013.10.20
RAD Stuido XE3


2-1359281365
SSS
2013-01-27 14:09
2013.10.20
Метод интерфейса