Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Change wallpaper! Help


Страницы:   1 2

pioli ©   (2013-01-25 18:38:00) 

Прога должна менять обои на рабочем столе, в 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'

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


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

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


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

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


pioli   (2013-01-26 12:01:00) [3]

Проверил [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


brother   (2013-01-26 11:59:00) [4]

w7x64 d7


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

На какой оси?


brother   (2013-01-26 11:53:00) [6]

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


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

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


brother   (2013-01-26 11:49:00) [8]

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

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


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

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

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


brother   (2013-01-26 11:48:00) [10]

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;


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

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


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

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


brother   (2013-01-26 11:33:00) [13]

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

как именно?


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

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

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

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


MBo   (2013-01-25 22:52:00) [15]

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


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

Невыполняется условие 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.


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

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


Rouse_   (2013-01-25 20:34:00) [18]

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


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

Теперь ошибок не выдает, но и обоину не менят
я так понимаю, надо как-то использовать эти две строчки или поправить чтобы все заработало? Недолжно ли вместо '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:11:00) [20]

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;


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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо