|
Hi all,
I've written a program (with bits taken out of various Articles on here) which captures the screen and then saves the screen shot as a bitmap.
I've got this working as a standalone executable however I now need to be able to do this from within a dll. The problem I've got is that as soon as I get to the line in the dll where I use a pointer to the CWnd* from the calling application I get a crash. At first I thought it was case of the CWnd pointer going out of focus so I tried GetSafeWnd but I get the same error (the reason I'm passing this in is that I need it for the creation of my dc and also to get the screen size).
Does anyone know what I'm doing wrong and how to correct it (I'm using MS VC++ 6.0)
TIA,
Andy
|
|
|
|
|
managed to solve this by not passing a CWnd pointer into the dll. WHat I've done is to call GetDesktopWindow within the dll, this returns a valid CWnd* which I can use
|
|
|
|
|
The crash occurs as thread local storage is used for CWnd objects. It is possible to pass the windows HWND (using CWnd::GetSafeHwnd() ) and then wrap that up in a new CWnd object within the DLL if desired.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
Hi,
i'm currently working on a game trainer. My problem is, that i want to protect it against
Spy-Software like spy XP, ArtMoney and other trainer cheating software. Also i want to protect it from beeing disasemmbled. Does anyone has some piece of code that can detect if a Spy-Software try to open my trainer. I'm currenty using the FinWindow to close a spy-prog. But i have to know the window title. I want to protect my prog against every spy-software - against every version and not with knowing the window title. My aim is it to detect if another process hooks my trainer or tries to cheat my trainer. Anyone has a source or link?
i forget: i use C++!
Thx!
TJ20
JR20
|
|
|
|
|
JR20 wrote:
Also i want to protect it from beeing disasemmbled.
It will always be possible to reverse engineer any executable if you have access to it.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
Thx for your reply!
Yes, but you can make it more complicated. I not want to protect it against "real" hackers. Only against hobby proggers. Does anyone has a idea how to prevent spy xp to cheat my trainer? Or to detect any spy-software? Thx!
JR20
|
|
|
|
|
I need to be able to list all of the registry values in a specific key.
|
|
|
|
|
You use RegEnumValue[^]
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Walliams (Little Britain)
|
|
|
|
|
Hi,
I try to create a dialog where user can select folders or files, these ones would be written in a configuration file, till here, no problem.
But, I want that these files, when added, were be displayed their icons on the dialog and when the user opens the dialog again, can view these folders or files and can add or delete them.
So, what I want is the app read the text file and display the icons, is it possible, or have I to resign myself with display the path with text only? Is there some function to do this?
Thanks a lot!
|
|
|
|
|
Use SHGetFileInfo() . Look at the hIcon and iIcon members of the SHFILEINFO struct.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Thanks!!!! This is what i'm looking for!
|
|
|
|
|
Hi all,
I'm trying my first unicode application. Now I have the problem how to convert from CString (the unicode variant) to std::string.
Anyone has a hint?
Thanks,
Patrik
|
|
|
|
|
|
Hi,
thanks for the link - but I'm still a VC6 user ;-(
Do you have a better idea??
Thanks,
Patrik
|
|
|
|
|
First of all:
1) CString --> this is a string wrapper class, which is part of the Microsoft Foundation Classes(MFC).
2) std::string --> this is a Standard C++ Class wrapping a char string. It is part of the Standard Template Library, or STL.
The conversions between them are:
<br />
CString cs("Your text");<br />
std::string s((LPCTSTR)cs);<br />
<br />
std::string s("Your text");<br />
CString cs(s.c_str());<br />
SkyWalker
|
|
|
|
|
Thats clear - but try that within an unicode environment!
my last idea was that:
std::string result;
int i;
char *pmb = (char *)malloc( sizeof( char ) );
for (int j = 0; j < theString.GetLength()+1; j++)
{
i = wctomb( pmb, theString.GetAt(j) );
if (i != 1 && i != -1)
result.append(pmb);
}
But no success ;-(
|
|
|
|
|
Try to use ANSI-To-UNICODE and UNICODE-TO-ANSI string conversions:
<br />
char *ansistr = "Your text";<br />
int a = lstrlenA(ansistr) + 1;<br />
BSTR unicodestr = SysAllocStringLen(NULL, 2*a);<br />
MultiByteToWideChar(CP_ACP, 0, ansistr, a, unicodestr, a);<br />
AfxMessageBox(CString(unicodestr), MB_OK, 0); :-)<br />
SysFreeString(unicodestr);<br />
and
<br />
BSTR unicodestr;<br />
SomeFunction(unicodestr);<br />
int a = SysStringLen(unicodestr) + 1;<br />
char *ansistr = new char[a];<br />
WideCharToMultiByte(CP_ACP, 0, unicodestr, -1, ansistr, a, NULL, NULL);<br />
AfxMessageBox(ansistr, MB_OK, 0); <br />
delete[] ansistr;<br />
SysFreeString(unicodestr);<br />
SkyWalker
|
|
|
|
|
The unicode version of std::string is std::wstring ; conversion should be straightforward.
or if you really need to use std::string, I think someone answered that already.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
CString is based on TCHAR that is #define -ed as char or wchar_t depending if ANSI or unicode.
std::string is ANSI, std::wstring is unicode.
They are typedef -s for std::basic_string<char> and std::basic_string<wchar_t> respectively.
It can be probably intresting -to reproduce TCHAR adaption- to use something like
namespace std {
typedef basic_string<TCHAR> tstring;
}
and then, use
std::tstring<code><br />
<br />
<br />
<small><br />
2 bugs found.<br />
> recompile ...<br />
65534 bugs found.<br />
:doh:<br />
</small>
|
|
|
|
|
Hi all,
Now I've got a working solution...
Thanks for all your help!!!!!
Patrik
|
|
|
|
|
Anyone knows how to create, having an array of files, a HDROP object in C?
All the documentation points to COM paradigm but no documentation available under MSDN for implementing this in C.
Thank you all
Marco
|
|
|
|
|
First call DragAcceptFiles to activate D&D messages to your window.
Then respond to WM_DROPFILES - wParam has the HDROP
Call DragQueryFile and/or DragQueryPoint to obtain file names.
Then call DragFinish when you are done with the memory that the HDROP references.
|
|
|
|
|
Ok, thank you. Now my application accepts dragged files, but can't still create my own objects to drop to the shell and/or to other applications.
The only remaining question is now <<ho to="" creating="" a="" sinthetic="" hdrop="" object="" by="" choosing="" your="" own="" files="" append="" into="" clipboard?="">>
I mean, if my app had to create its own file, by "FileWriting" a stream, at the end of the ops, how it would set a synthesized object into Global Memory such to be accessed by other apps?
Is it just the same as copying a DIB or a WAVE, allocating global memory, locking and writing first some structure signature like BITMAPINFO and then the whole buffer containing zero terminated strings?
Thank you,
Marco
|
|
|
|
|
The ClipBoard is different from HDROP.
Data in the clipboard is in one (or more) of several standard formats or else in a proprietary format of your own choosing. I do believe you need to allocate memory specially for object data placed into the clipboard.
For Drag and Drop support of your own objects, you need to use COM - read about the IDropSource and IDropTarget interfaces.
The IDropSource interface is one of the interfaces you implement to provide drag-and-drop operations in your application. It contains methods used in any application used as a data source in a drag-and-drop operation. The IDropTarget interface is one of the interfaces you implement to provide drag-and-drop operations in your application. It contains methods used in any application that can be a target for data during a drag-and-drop operation.
|
|
|
|
|
Hi All,
I am launching an exe using CreatProcess. I have handle and ID of launched process and its main thread. I want the handle to its main window. How do I?
One way is through EnumThreadWindows(), which will get me all window handles for the main thread. But how do I know which one is the main window handle?
Any other aproach?
--------------
Vaibhav...
|
|
|
|