|
In addition to the previous answer, I suggest that you take a look at the container classes from the STL (std::list or std::vector for example). At first sight it might be more complicated but it solves a lot of problems (and finally ease your life because you won't need to manage the memory yourself).
|
|
|
|
|
Hi,
So I have this code to open a handle hKey which works fine.
RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\MyProgram", 0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
Then I try to set a value from a GUI CString member variable m_license_key into registry.
RegSetValueEx(hKey, "PROGRAM_KEY", 0L, REG_DWORD,(LPBYTE)&m_license_key, sizeof(DWORD));
The set function also works fine other than the fact that "rubbish" gets inserted as value for my registry key. In other words, HKEY_LOCAL_MACHINE\\SOFTWARE\\MyProgram\\PROGRAM_KEY is added, but the value is not what I keyed into m_license_key (it is just some strange text or some 0xHex numbers)
To be honest, I do not know what to specify for parameters 4, 5, 6 of RegSetValueEx. Any help would be greatly appreciated. Thanks.
|
|
|
|
|
I use this code...
bool CRegistry::SetKey(HKEY hKey, CString csSubkey, CString csValName, CString csVal)
{
if(hKey != HKEY_CURRENT_USER)
return false;
if(csSubkey.IsEmpty() || csValName.IsEmpty() || csVal.IsEmpty())
return false;
HKEY hWkKey;
LONG lRetorn = RegOpenKeyEx(hKey,csSubkey,0,KEY_ALL_ACCESS,&hWkKey);
if(lRetorn == ERROR_SUCCESS)
{
int iLength = csVal.GetLength();
lRetorn = RegSetValueEx(hWkKey,
csValName,
0,
REG_SZ,
(BYTE *)csVal.GetBuffer(0),
iLength);
RegFlushKey(hWkKey);
RegCloseKey(hWkKey);
if( lRetorn == ERROR_SUCCESS)
return true;
}
return false;
}
Hope this helps.
|
|
|
|
|
You can't cast a CString to a LPBYTE.
If you want the text in the CString saved then use the REG_SZ type...
RegSetValueEx(hKey, "PROGRAM_KEY", 0L, REG_SZ,(LPBYTE)(LPCTSTR)m_license_key, m_license_key.GetLength() + 1);
|
|
|
|
|
trumper wrote: I do not know what to specify for parameters 4, 5, 6 of RegSetValueEx.
They hide that information in the documentation[^]
led mike
|
|
|
|
|
led mike wrote: They hide that information
bastards
|
|
|
|
|
Thanks guys for all the help.
(BYTE *)m_license_key.GetBuffer(0) worked best for me =)
Really appreciate it.
|
|
|
|
|
How mean they do it to us
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Using the 2.25 version in VS2005:
I have an OnNotify() function in my parent window, and I get the GVN_BEGINLABELEDIT message just fine, but I never see a GVN_ENDLABELEDIT message. What am I doing wrong?
[EDIT]
It seems the grid only fires the message if the text in the cell changes. I fixed it in my copy of the grid and posted the fix in the article comments.
[/EDIT]
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Hi All,
Is anyone aware of the handle count for a process in windows?
Please let me know if it require further clarification.
Suraj
Suraj Gupta
|
|
|
|
|
HandleCount property of a process refers to the number of operating system handles opened by that process. I suggest you ask such questions pertaining to .NET stuff in the .NET Framework Forum.
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Is there any limit to that number...
Suraj Gupta
|
|
|
|
|
|
Why is that a .net specific question ?
The original poster did not mentionned the HandleCount property at all in his post.
|
|
|
|
|
That person has edited his post! He had asked what HandleCount was. Hope you understand it.
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Hi
The Handle count for a process is the total of handles used: Thread, opened files, events.
I think u know that the function to get HC is GetProcessHandleCount.
U have to be carefully if your app have HC that never decreases
Regards
David Leyva
|
|
|
|
|
And also except handle count we have thread count
|
|
|
|
|
Thanks alot for your replies...
Handle count for a process is limited to 10000 and it can be increased to 18000 (max limit). But I can see different process on my machine (like explorer.exe) having handle count greater than 18000.
How that process is running properly even when handle count has increase dramactically?
Suraj Gupta
|
|
|
|
|
In a previous post I was attempting to "serialize" an HICON, i.e. save it as a blob in a file or database: the opposite operation to the ExtractIcon() operation. I have since learned how to do this (see routine below).
BUT now my problem is, this routine loses color information. When the routine is run against a true-color icon, and the buffer is saved as a .ico file, and the .ico file is reloaded with ExtractIcon(), the resulting icon has reduced to 256 colors.
I think this must be a limitation of OleCreatePictureIndirect(). How can I fix my routine?
------------------------------------------------
void SerializeIcon(const HICON icon, DWORD* size, BYTE** data)
{
LPPICTURE pPicture;
PICTDESC rPD;
rPD.cbSizeofstruct = sizeof(PICTDESC);
rPD.picType = PICTYPE_ICON;
rPD.icon.hicon = icon;
IStream* pStream = NULL;
HGLOBAL hMem = NULL;
BYTE* pMem = NULL;
long lActual;
OleCreatePictureIndirect(&rPD, IID_IPicture, FALSE, (void**) &pPicture);
CreateStreamOnHGlobal(0, TRUE, &pStream);
pPicture->SaveAsFile(pStream, TRUE, &lActual);
pPicture->Release();
GetHGlobalFromStream(pStream, &hMem);
pMem = (BYTE*) GlobalLock(hMem);
*size = GlobalSize(hMem);
*data = (BYTE*) malloc(*size);
CopyMemory(*data, pMem, *size);
GlobalUnlock(hMem);
GlobalFree(hMem);
}
------------------------------------------------
<div class="ForumSig">
cheers,
Neil</div>
|
|
|
|
|
Did you find the answer to this question? I have the same problem.
|
|
|
|
|
The below code sorts a matrix diagonally. Does it, but at the end it's throwing an "illegal" may be a bad access error. Why ?
int main(int argc, char* argv[])
{
int A[5][5];int i;int j;
int temp; int c,flag;
}
input :
1-1-1
2-2-2
3-3-3
output:
1-2-3
1-2-3
1-2-3
-- modified at 6:02 Friday 12th January, 2007
*
*
|
|
|
|
|
You are accessing declared array with invalid index.
int A[5][5]; should be accessed only from A[0][0] to A[4][4] where as you are accessing it through A[1][1] to A[5][5]
Astricks wrote: for (i = 1;i<=5;i++) {
You should modify this to,
for (int i = 0 ; i <5 ; i++) at all places you have done mistake.
|
|
|
|
|
|
C/C++ arrays are 0-based, i.e. if you declare:
int a[5];
then you have the following items:
a[0], a[1], a[2], a[3], a[4];
on the other hand, a[5] , is out-of-bounds.
so the correct iteration will be
for (i = 0;i<5;i++)
a[i]= (whatever);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
thanks!
*
|
|
|
|