|
The hooking appl is working in GUI mode, but it does not work when I changed it to console mode, that is I call the sethook function by loadlibrary in console exe instead of GUI exe
Has anyone got the reason?
Thanks.
|
|
|
|
|
which hooking app are u talking about?
Don't try it, just do it!
|
|
|
|
|
Actually, I tried to modify keyboard hooks app posted in this site, and the modified version is as follows:
#include "stdafx.h"
#include <windows.h>
typedef BOOL (WINAPI *inshook)();
int main(int argc, char* argv[])
{
static HINSTANCE hinstDLL;
inshook instkbhook;
hinstDLL = LoadLibrary((LPCTSTR) "hodll.dll");
instkbhook = (inshook)GetProcAddress(hinstDLL, "installhook");
instkbhook();
while(1) {
Sleep(100000);
}
return 0;
}
As you can see the console app only load the sethook function to capture the keystroke and then save it to a file, but it does not work.
Do you know is there any difference % console app and GUI app?
|
|
|
|
|
There is this vector of string that has duplicates in it. I am trying to build a second vector of string to hold the non-duplicates.
The program crashes with the following code.
('iterB' and 'iterE' are already defined as iterators of the first vector.)
iterB = Sym.begin();
iterE = Sym.end();
vector<string>::iterator iterNonDup_B;
vector<string>::iterator iterNonDup_E;
for(; iterB!=iterE; ++iterB)
{
if(nonDupSym.empty())
{
nonDupSym.push_back(*iterB);
nonDupCnt++;
}
else
for(; iterNonDup_B!=iterNonDup_E; ++iterNonDup_B)
{
if(*iterB==*iterNonDup_B)
dupCnt++;
else
{
nonDupSym.push_back(*iterB);
nonDupCnt++;
}
}
iterNonDup_B = nonDupSym.begin();
iterNonDup_E = nonDupSym.end();
}
Any help in pointing out flaw(s) would be greatly appreciated.
Thanks!
William
Fortes in fide et opere!
|
|
|
|
|
If nonDupSym isn't empty at the start then iterNonDup_E / B aren't initialized yet which would likely do something bad, like raise an exception.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
You should sort (std::sort) on your vector. After it is just a matter of iterating through your vector and looking if the next element is equal.
|
|
|
|
|
When the vector is sorted, you can simply use the std::unique() or std::unique_copy() standard algorithms.
|
|
|
|
|
You can use the STL functions std::sort and std::unique to do this efficiently. Example:
std::vector<std::string> v;<br />
<br />
v.push_back("1");<br />
v.push_back("2");<br />
v.push_back("3");<br />
v.push_back("4");<br />
v.push_back("5");<br />
v.push_back("3");<br />
v.push_back("3");<br />
v.push_back("4");<br />
<br />
std::sort(v.begin(),v.end());<br />
v.erase(std::unique(v.begin(),v.end()),v.end());
- Mike
|
|
|
|
|
Thanks for replying, and thanks for the solution.
There were some things I had to give up (like where the duplicates were entering the vector [for code tweaking at those places]), but I had no problem accepting the trade-off with the solution you offered.
Thanks again.
William
Fortes in fide et opere!
|
|
|
|
|
Hi all,
I am developing a Dialog based application in VC 6.0 and having 2 problems. Below is the code I am writing:
CChildWnd *cwnd ;
cwnd = new CChildWnd() ;
cwnd->Create(IDD_CHILD_WND, this) ;
cwnd->ShowWindow(SW_SHOWNORMAL)
First problem is that, when I am going to MINIMIZE the child MODELESS dialog, instead of going down to the TASK BAR, it minimizes on top of it (above start menu).
Second problem is that, when I am trying to MINIMIZE the parent main dialog window, all the child MODELESS dialogs are also getting MINIMIZE with it.
What i want is that the minimization of parent dialog should not enforce the minimization of child modeless dialogs.
Please can anybody help me in this regard to solve these problems.
Thanks.
The Phantom.
|
|
|
|
|
|
Sorry, systray is not my problem
Dammy More
|
|
|
|
|
I am still struggling with this vector and COleSafeArray stuff.
can someone help me convert this
VB...
<br />
Dim tSA As SAFEARRAY2D<br />
Dim bDib() As Byte<br />
Dim cDib As New cDIBsection (which I have converted <a href="http://www.codeproject.com/bitmap/dibsection.asp?target=dibsection">to </a>[<a target=_blank title='New Window' href="http://www.codeproject.com/bitmap/dibsection.asp?target=dibsection">^</a>] m_DIBSection.Load(my.bmp); )<br />
With tSA<br />
.cbElements = 1<br />
.cDims = 2<br />
.Bounds(0).lLbound = 0<br />
.Bounds(0).cElements = cDib.Height<br />
.Bounds(1).lLbound = 0<br />
.Bounds(1).cElements = cDib.BytesPerScanLine<br />
.pvData = cDib.DIBSectionBitsPtr<br />
End With<br />
CopyMemory ByVal VarPtrArray(bDib), VarPtr(tSA), 4<br />
Later, JoeSox www.humanaiproject.org
"The worst fad has been these stupid little robots,
Graduate students are wasting 3 years of their lives
soldering and repairing robots, instead of making them smart.
It's really shocking." -Marvin Minsky.
|
|
|
|
|
Aha! Trying to port the classic VB DibSection code into C++, eh? Well, in C++, you can either use raw pointers, or you can use the SafeArray, just as VB does.
What's going on in the VB example:
'a 2D SAFEARRAY descriptor
Dim tSA As SAFEARRAY2D
'an array used to access the bitmap's bits
Dim bDib() As Byte
Dim cDib As New cDIBsection (which I have converted to [^] m_DIBSection.Load(my.bmp); )
'fill in the SafeArray descriptor struct
With tSA
.cbElements = 1
.cDims = 2
.Bounds(0).lLbound = 0
.Bounds(0).cElements = cDib.Height
.Bounds(1).lLbound = 0
.Bounds(1).cElements = cDib.BytesPerScanLine
.pvData = cDib.DIBSectionBitsPtr
End With
'copy the descriptor over the descriptor in the bDib SafeArray
CopyMemory ByVal VarPtrArray(bDib), VarPtr(tSA), 4
Partial C++ port:
SAFEARRAY2D* tSA;
tSA->cbElements = 1;
tSA->cDims = 2;
tSA->Bounds[0]->lLbound = 0;
tSA->Bounds[0]->cElements = cDib->Height;
tSA->Bounds[1]->lLbound = 0;
tSA->Bounds[1]->cElements = cDib->BytesPerScanLine;
tSA->pvData = cDib->DIBSectionBitsPtr;
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
Dear All,
I am developing an application in MFC VC++ Version 6.0 for Windows 2000. I have made my application run as a service. I want to
run my program in safe mode also. But unfortunately my service doesnot starts in the safe mode and hence my appplication doesnot start.
How can I run my service run in safe mode also ?
Or is there any entry in the registry which shows that the system is in safe mode , and the system should run following set of programs at startup during safe mode.
Feel free to ask any further queries in this regards,
Thanks
Rohit Dhamija
|
|
|
|
|
I am developing using Visual C++6 (service pack 5) under Windows 98.
I have created a multi-monitor application, which works fine in the debug version (I put #define WINVER 0x0500 right at the start of my code, to enable Win98 & Win2K features).
In the VC6 IDE message pane, I get the following when I build:
NOTE: WINVER has been defined as 0x0500 or greater which
enables Windows NT 5.0 and Windows 98 features. When these
headers were released, Windows NT 5.0 beta 1 and Windows 98
beta 2.1 were the current versions.
For this release when WINVER is defined as 0x0500 or greater,
you can only build beta or test applications. To build a
retail application, set WINVER to 0x0400 or visit
http://www.microsoft.com/msdn/sdk to see if retail Windows
NT 5.0 or Windows 98 headers are available.
The problem is, I want to create a release version (I need to do some speed optimisation of the inner loop!)
I read the info in www.codeproject.com/cpp/cppforumfaq.asp, para 2.2, _BUT_ the SDK updates are not applicable to Windows 98.
To summarise - how do I update the header files, and presumably some library files and whatever else is necessary, to let me generate a release version under Windows 98?
|
|
|
|
|
You probably just need to install the latest platform SDK.
To be perfectly honest, everyone should
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
I tried that (without reading all the information as well as I should!)
The information on PSDK says:
The applications you develop with this edition of the SDK
can run on the Windows Server 2003, Windows XP, Windows
2000, Windows NT®, Windows Millennium Edition, Windows 98,
and Windows 95.
So I downloaded, installed, and tried to compile my application. I got a message something like "RC.EXE wrong version. Install a later version of Windows." So I went back to the MS SDK page, and when I checked, saw:
SYSTEM REQUIREMENTS
The SDK requires Microsoft® Windows® XP, Windows 2000,
Microsoft Windows NT® 4.0 SP6, or Windows Server 2003.
The SDK is not supported on Windows 95, Windows 98, or
Windows Millennium Edition.
But the installer does not check Windows version - it happily installs on Windows 98. The un-installer won't remove the PSDK, either!
|
|
|
|
|
You can still install the PSDK. WHen you use the "Register PSDK Directories with Visual Studio" menu item to set up the include/lib/bin paths in VC 6, you'll need to go remove the BIN entry from the executable search path. This way you'll use the VC 6 compiler/linker/RC, instead of the PDSK ones which are crippled and won't run on 9x anymore.
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
Latest art~!@#2rDFA#@(#*%$Rfa39f3fqwf--=
NO CARRIER
|
|
|
|
|
Thanks - I will try and report the results.
I may have problems because I tried to uninstall, but we'll see. If necessary I will install again.
The Microsoft SDK_bin and Microsoft SDK_lib directories have Win95 subdirectories - any suggestions what to do about the contents of those?
|
|
|
|
|
Thanks to Michael Dunn for the assistance.
I now have a Visual C++ 6 project with WINVER = 5.0 (Windows 98 / Windows 2000 - specific features enabled) and I can build a release version.
For others with the same problem, I did the following:
* I installed the latest platform SDK from the Microsoft MSDN site.
* I ran:
Start Menu/Programs/Microsoft Platform SDK February 2003/Visual Studio Registration/Register PSDK Directories with Visual Studio
* In Visual Studio 6, I went into Tools / Options / Directories / Executable files, and deleted " C:\Program Files\Microsoft SDK\bin" from the list.
I hope this helps others in the future.
|
|
|
|
|
I'm handling the notification message of TVN_EXPANDING in an OnItemexpanding method of a CTreeView based view. The structure passed to the method contains two members called itemOld and itemNew. From some limited testing it seems that itemNew contains valid stuff, so what the heck is itemOld all about for this message? Thanks.
Chris Meech
"what makes CP different is the people and sense of community, things people will only discover if they join up and join in." Christian Graus Nov 14, 2002.
Oh and for those that ask programming questions in the lounge. Seek the truth here[^].
|
|
|
|
|
Some messages give you info on two nodes at once, eg TVN_SELCHANGING . The notifications that only deal with one node use only one (although not all such messages use the same TVITEM struct; it would've been nice to have standardized behavior)
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
Latest art~!@#2rDFA#@(#*%$Rfa39f3fqwf--=
NO CARRIER
|
|
|
|
|
I started a thread in the C# section about the PushSource example in DirectX\DirectShow\Filters which could be used to re-create a video stream from a series of bitmaps...
At the moment I'm trying to figure out how to pass bitmaps directly to the PushSource code rather than it pulling in files from the hard drive.
I'm wondering whether the Grabber example could be thrown in reverse. Instead of it's callback function notifying when a fresh grab is ready in the buffer the callback function makes a request to fill the buffer with a bitmap.
My main code is capturing a series of frames as single bitmaps and it would be nice be able to feed them straight into DirectShow/PushSource to render or write out to a file.
As I'm rubbish at C++ could anyone suggest a better way of approaching this problem?
Best Regards,
Andy
------------
God created the universe in 6 days and has been debugging ever since - welcome to the biggest ever beta test
|
|
|
|
|
Is it possible to hide and show a tree item ?
When I mean to hide, I do not mean to collapse a branch and make an item invisible.
I could not find a solution so far.
Orcun Colak
|
|
|
|