![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Change wallpaper! Help
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;
а вообще зачем ты за это взялся если программировать не умеешь?