| 
                                         [quote="vsego"]Sorry, ali ne mogu izdrzati... [url=http://www.roesler-ac.de/wolfram/hello.htm]The Hello World Collection[/url]. ;)[/quote]
 Eh, sad ni ja nemrem izdržat. :D
 Evo kako master programer radi hello world program :lol:
 [
 uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
 ]
 library LHello
 {
 // bring in the master library
 importlib("actimp.tlb");
 importlib("actexp.tlb");
 
 // bring in my interfaces
 #include "pshlo.idl"
 
 [
 uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
 ]
 cotype THello
 {
 interface IHello;
 interface IPersistFile;
 };
 };
 
 [
 exe,
 uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
 ]
 module CHelloLib
 {
 
 // some code related header files
 importheader();
 importheader();
 importheader();
 importheader("pshlo.h");
 importheader("shlo.hxx");
 importheader("mycls.hxx");
 
 // needed typelibs
 importlib("actimp.tlb");
 importlib("actexp.tlb");
 importlib("thlo.tlb");
 
 [
 uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
 aggregatable
 ]
 coclass CHello
 {
 cotype THello;
 };
 };
 
 #include "ipfix.hxx"
 
 extern HANDLE hEvent;
 
 class CHello : public CHelloBase
 {
 public:
 IPFIX(CLSID_CHello);
 
 CHello(IUnknown *pUnk);
 ~CHello();
 
 HRESULT __stdcall PrintSz(LPWSTR pwszString);
 
 private:
 static int cObjRef;
 };
 
 #include <windows.h>
 #include <ole2.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "thlo.h"
 #include "pshlo.h"
 #include "shlo.hxx"
 #include "mycls.hxx"
 
 int CHello::cObjRef = 0;
 
 CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
 {
 cObjRef++;
 return;
 }
 
 HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
 {
 printf("%ws\n", pwszString);
 return(ResultFromScode(S_OK));
 }
 
 CHello::~CHello(void)
 {
 
 // when the object count goes to zero, stop the server
 cObjRef--;
 if( cObjRef == 0 )
 PulseEvent(hEvent);
 
 return;
 }
 
 #include <windows.h>
 #include <ole2.h>
 #include "pshlo.h"
 #include "shlo.hxx"
 #include "mycls.hxx"
 
 HANDLE hEvent;
 
 int _cdecl main(
 int argc,
 char * argv[]
 ) {
 ULONG ulRef;
 DWORD dwRegistration;
 CHelloCF *pCF = new CHelloCF();
 
 hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
 
 // Initialize the OLE libraries
 CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
 CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
 REGCLS_MULTIPLEUSE, &dwRegistration);
 
 // wait on an event to stop
 WaitForSingleObject(hEvent, INFINITE);
 
 // revoke and release the class object
 CoRevokeClassObject(dwRegistration);
 ulRef = pCF->Release();
 
 // Tell OLE we are going away.
 CoUninitialize();
 
 return(0); }
 
 extern CLSID CLSID_CHello;
 extern UUID LIBID_CHelloLib;
 
 CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
 0x2573F891,
 0xCFEE,
 0x101A,
 { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
 };
 
 UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
 0x2573F890,
 0xCFEE,
 0x101A,
 { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
 };
 
 #include <windows.h>
 #include <ole2.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include "pshlo.h"
 #include "shlo.hxx"
 #include "clsid.h"
 
 int _cdecl main(
 int argc,
 char * argv[]
 ) {
 HRESULT hRslt;
 IHello *pHello;
 ULONG ulCnt;
 IMoniker * pmk;
 WCHAR wcsT[_MAX_PATH];
 WCHAR wcsPath[2 * _MAX_PATH];
 
 // get object path
 wcsPath[0] = '\0';
 wcsT[0] = '\0';
 if( argc 1) {
 mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
 wcsupr(wcsPath);
 }
 else {
 fprintf(stderr, "Object path must be specified\n");
 return(1);
 }
 
 // get print string
 if(argc 2)
 mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
 else
 wcscpy(wcsT, L"Hello World");
 
 printf("Linking to object %ws\n", wcsPath);
 printf("Text String %ws\n", wcsT);
 
 // Initialize the OLE libraries
 hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
 if(SUCCEEDED(hRslt)) {
 
 hRslt = CreateFileMoniker(wcsPath, &pmk);
 if(SUCCEEDED(hRslt))
 hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
 
 if(SUCCEEDED(hRslt)) {
 
 // print a string out
 pHello->PrintSz(wcsT);
 
 Sleep(2000);
 ulCnt = pHello->Release();
 }
 else
 printf("Failure to connect, status: %lx", hRslt);
 
 // Tell OLE we are going away.
 CoUninitialize();
 }
 
 return(0);
 } 
					
					
 
Eh, sad ni ja nemrem izdržat.  
 
Evo kako master programer radi hello world program  
 
[
 
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
 
]
 
library LHello
 
{
 
// bring in the master library
 
importlib("actimp.tlb");
 
importlib("actexp.tlb");
 
 
// bring in my interfaces
 
#include "pshlo.idl"
 
 
[
 
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
 
]
 
cotype THello
 
{
 
interface IHello;
 
interface IPersistFile;
 
};
 
};
 
 
[
 
exe,
 
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
 
]
 
module CHelloLib
 
{
 
 
// some code related header files
 
importheader();
 
importheader();
 
importheader();
 
importheader("pshlo.h");
 
importheader("shlo.hxx");
 
importheader("mycls.hxx");
 
 
// needed typelibs
 
importlib("actimp.tlb");
 
importlib("actexp.tlb");
 
importlib("thlo.tlb");
 
 
[
 
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
 
aggregatable
 
]
 
coclass CHello
 
{
 
cotype THello;
 
};
 
};
 
 
#include "ipfix.hxx"
 
 
extern HANDLE hEvent;
 
 
class CHello : public CHelloBase
 
{
 
public:
 
IPFIX(CLSID_CHello);
 
 
CHello(IUnknown *pUnk);
 
~CHello();
 
 
HRESULT __stdcall PrintSz(LPWSTR pwszString);
 
 
private:
 
static int cObjRef;
 
};
 
 
#include <windows.h>
 
#include <ole2.h>
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include "thlo.h"
 
#include "pshlo.h"
 
#include "shlo.hxx"
 
#include "mycls.hxx"
 
 
int CHello::cObjRef = 0;
 
 
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
 
{
 
cObjRef++;
 
return;
 
}
 
 
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
 
{
 
printf("%ws\n", pwszString);
 
return(ResultFromScode(S_OK));
 
}
 
 
CHello::~CHello(void)
 
{
 
 
// when the object count goes to zero, stop the server
 
cObjRef–;
 
if( cObjRef == 0 )
 
PulseEvent(hEvent);
 
 
return;
 
}
 
 
#include <windows.h>
 
#include <ole2.h>
 
#include "pshlo.h"
 
#include "shlo.hxx"
 
#include "mycls.hxx"
 
 
HANDLE hEvent;
 
 
int _cdecl main(
 
int argc,
 
char * argv[]
 
) {
 
ULONG ulRef;
 
DWORD dwRegistration;
 
CHelloCF *pCF = new CHelloCF();
 
 
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
 
 
// Initialize the OLE libraries
 
CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
 
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
 
REGCLS_MULTIPLEUSE, &dwRegistration);
 
 
// wait on an event to stop
 
WaitForSingleObject(hEvent, INFINITE);
 
 
// revoke and release the class object
 
CoRevokeClassObject(dwRegistration);
 
ulRef = pCF→Release();
 
 
// Tell OLE we are going away.
 
CoUninitialize();
 
 
return(0); }
 
 
extern CLSID CLSID_CHello;
 
extern UUID LIBID_CHelloLib;
 
 
CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
 
0x2573F891,
 
0xCFEE,
 
0x101A,
 
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
 
};
 
 
UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
 
0x2573F890,
 
0xCFEE,
 
0x101A,
 
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
 
};
 
 
#include <windows.h>
 
#include <ole2.h>
 
#include <stdlib.h>
 
#include <string.h>
 
#include <stdio.h>
 
#include "pshlo.h"
 
#include "shlo.hxx"
 
#include "clsid.h"
 
 
int _cdecl main(
 
int argc,
 
char * argv[]
 
) {
 
HRESULT hRslt;
 
IHello *pHello;
 
ULONG ulCnt;
 
IMoniker * pmk;
 
WCHAR wcsT[_MAX_PATH];
 
WCHAR wcsPath[2 * _MAX_PATH];
 
 
// get object path
 
wcsPath[0] = '\0';
 
wcsT[0] = '\0';
 
if( argc 1) {
 
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
 
wcsupr(wcsPath);
 
}
 
else {
 
fprintf(stderr, "Object path must be specified\n");
 
return(1);
 
}
 
 
// get print string
 
if(argc 2)
 
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
 
else
 
wcscpy(wcsT, L"Hello World");
 
 
printf("Linking to object %ws\n", wcsPath);
 
printf("Text String %ws\n", wcsT);
 
 
// Initialize the OLE libraries
 
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
 
if(SUCCEEDED(hRslt)) {
 
 
hRslt = CreateFileMoniker(wcsPath, &pmk);
 
if(SUCCEEDED(hRslt))
 
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
 
 
if(SUCCEEDED(hRslt)) {
 
 
// print a string out
 
pHello→PrintSz(wcsT);
 
 
Sleep(2000);
 
ulCnt = pHello→Release();
 
}
 
else
 
printf("Failure to connect, status: %lx", hRslt);
 
 
// Tell OLE we are going away.
 
CoUninitialize();
 
}
 
 
return(0);
 
}
					_________________ Click me !
_______________________
 
Bad panda!  
					
					
					
				 |