Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.10.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.002 c
15-1367927202
delphistorm
2013-05-07 15:46
2013.10.20
Где находится Exception Types to Ignore


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


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


2-1359138247
вова
2013-01-25 22:24
2013.10.20
Как проверить существование объекта типа TBitmap


2-1359616750
Xmen
2013-01-31 11:19
2013.10.20
DirWatcher установка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский