home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 May
/
Pcwk5b98.iso
/
Borland
/
Cplus45
/
BC45
/
OCT_GUI.PAK
/
GUIDGEN.CPP
next >
Wrap
C/C++ Source or Header
|
1995-08-29
|
2KB
|
51 lines
//----------------------------------------------------------------------------
// ObjectConnections - (C) Copyright 1994 by Borland International
// Tool to generate a GUID from the network card ID, using the OLE 2 API func.
//----------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <string.h>
#include <compobj.h>
int CALLBACK __export
GuidProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM /*lParam*/)
{
if (msg == WM_COMMAND && wParam != 'G') // ignore msgs from edit control
::EndDialog(hDlg, TRUE); // quit on OK or ESC or Alt-F4
else if (msg != WM_INITDIALOG)
return 0;
else { // do all the work at INITDIALOG
GUID id;
IMalloc* alloc;
char far* guidStr = 0;
::CoInitialize(0); // init OLE to get memory for GUID
::CoGetMalloc(MEMCTX_TASK, &alloc);
::CoCreateGuid(&id);
::StringFromCLSID(id, &guidStr);
if (guidStr) {
::OpenClipboard(hDlg); // copy GUID string to clipboard
::EmptyClipboard();
HANDLE cbhdl = ::GlobalAlloc(GHND,lstrlen(guidStr)+1);
char far* cbdata = (char far*)::GlobalLock(cbhdl);
lstrcpy(cbdata, guidStr);
::GlobalUnlock(cbhdl);
::SetClipboardData(CF_TEXT, cbhdl);
::CloseClipboard();
::SetDlgItemText(hDlg, 'G', guidStr); // show GUID, overwrites error msg
}
if (alloc) {
alloc->Free(guidStr);
alloc->Release();
}
::CoUninitialize();
}
return 1;
}
int PASCAL
WinMain(HINSTANCE hInst, HINSTANCE/*hPrev*/, char far*/*cmdLine*/, int/*show*/)
{
return ::DialogBox(hInst, "GuidDlg", 0,(DLGPROC)GuidProc);
}