|
If your view is a CFormView , call CFormView::OnInitialUpdate() at the beginning og your OnInitialUpdate() method. Same with other types of views.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
How do you read the value from a memory address using c++ ?
do you use pointer or something ?
|
|
|
|
|
What u want exactly?
If u looking for actual memory address of your volatile memory then I dont think memory address is shown by your pointer is the actual one.
Also u can manipuate data of the memory address of current process in windows at least.
If you want actual physical memory address
u please look for some windows memory management book.
|
|
|
|
|
You can use the * operator. But you have to tell C++ what sort of data to expect at the address, so it knows what type of variable to create, e.g.:
int memoryAddressValue = *((int *)memoryAddress);
if you know an int is at the address (which occupies 4 bytes, so this call reads the address and the next 3 addresses). Memory addresses are just bytes or data, so their meaning is open to interpretation ! This call casts the address to a pointer to an integer - (int*)memoryAddress - and then reads the value from memory - * operator.
Note: if the process doesn't have access to the address (which usually means the address is not the address of one of its variables on the stack, or is not part of the heap space defined by calling new/malloc etc) then expect an access violation exception.
Thanks,
Neil Humphreys.
|
|
|
|
|
thanks for the swift reply humps. I could understand your explaination better than any of those websites out there. Well you know the websites nowadays are providing more junks per piece of useful information.
well i think i understand what you mean, and that exactly is what i am trying to do.
I am trying to get a vaule from the address of another application. I suppose those address are not part of the heap space defined by my source code. So what am are the alternative now ?
* define my source code to include those address ?
well i am super confused stucked now i been bombing the internet all night with no avail... No last plea
anyone could be kind enough to offer some help to write the souce code in c++ to get the value of a WORD from a memory address finder application -- memware -- the address is 12C71560 and probably 0x12C71560 in c++ ?
well fragment of codes or even a clue as to which command would be kind enough.
|
|
|
|
|
Modern operating systems are designed to prevent exactly the type of access you are attempting. As a rule, each process runs in its own address space, and cannot access the address space of other processes. For example, suppose you have a variable in process A whose address is 12C71560 . That address has meaning only inside process A. That same address inside process B only refers to memory that may or may not be allocated to process B.
If you are looking to establish communication between two processes, try here[^]. The topic you are looking for is inter-process communication.
Software Zen: delete this;
|
|
|
|
|
Well i been searching for this one with no answer Glad to have some inputs.
I am trying to read a DWord from a memory location 0x003b9c how do i do that in code ?
indeed i just need to get a peek of the value
|
|
|
|
|
You need to use pointers.
DWORD *pointer = 0x00003b9c;
DWORD ValueAtAddress = *pointer;
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
Well i tried that out your code PJ Arends, but i got some errors in as follow is what is keyed into the program.
#include <stdio.h>
#include<stdlib.h>
void main()
{
DWORD *pointer = 0x00003b9c;
DWORD ValueAtAddress = *pointer;
}
i got the following ERRORS
Compiling...
tervalor.cpp
C:\tervalor.cpp(5) : error C2065: 'DWORD' : undeclared identifier
C:\tervalor.cpp(5) : error C2065: 'pointer' : undeclared identifier
C:\tervalor.cpp(5) : error C2106: '=' : left operand must be l-value
C:\tervalor.cpp(6) : error C2146: syntax error : missing ';' before identifier 'ValueAtAddress'
C:\tervalor.cpp(6) : error C2065: 'ValueAtAddress' : undeclared identifier
C:\tervalor.cpp(6) : error C2100: illegal indirection
Error executing cl.exe.
tervalor.obj - 6 error(s), 0 warning(s)
so i correct the code to the following :
#include <stdio.h>
#include<stdlib.h>
void main()
{
int *pointer = 0x00003b9c;
int ValueAtAddress = *pointer;
}
now i get the error as follow :
Compiling...
tervalor.cpp
C:\tervalor.cpp(5) : error C2440: 'initializing' : cannot convert from 'const int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
tervalor.obj - 1 error(s), 0 warning(s)
well i am new and so think i am not going to get it but i will try. Anyway please help me understand. I like this board pretty much and i will continue to use it until i become professional and be able to help people someday.
|
|
|
|
|
Hi there,
I think you need to change the code to:
int *pointer = (int*) 0x00003b9c;
int ValueAtAddress = *pointer;
This is because C++ is strongly typed - and 0x00003b9c is a constant. The compiler assumes you were trying to create a "const int *" and made a typo - the (int*) "casts" the value into the required type.
Thanks,
Neil Humphreys.
|
|
|
|
|
I am using IE web control in my application to access some local HTML or remote URL.
i'm using internetsession & Http classes for this purpose.
When I browse to a certain Local *.html page or remote URL, the file is cached with all its *.gif, *.ocx,...etc in ie catche directories.
e.g when "www.codeproject.com" is saved then "index.asp" is only cached in IE cache so when saved page is opened from directory location then blank space is displayed instead of this file.
I want to do the followings:
1. Get a list (name and physical location on the local HDD)of all these cached files for (only) the currently browsed page.
2. Copy these files to my own cache directory.
Any idea how can I do that with or without webbrowser control. Is there a sample code or class for doing that?
Thanks for the help.
Arooj
|
|
|
|
|
you can use CHttpSession class you pass the url of the page you want to download to the OpenURL method and it reurns a handle to the page as if you are working with a local file which you can save to your hard disk.
try to find examples for OpenURL in the msdn
|
|
|
|
|
MFC Grid Control Exception in Release Build Only!
Can anyone help me with this? I get an unhandled exception error on the NM_CLICK message handling (function OnGridClick I created in my view) in the Release build, that works fine in the debug build!
All of my methods are executed properly but after they've returned there's an unhandled exception that I cannot seem to trace.
Can anyone help?!
|
|
|
|
|
We need more information. Show your code for the NM_CLICK message handler and tell us what the exception is.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
Here's the mapping of the message to the function in my view.
IDC_CUSTOM1 is obviously the MFC Grid Control.
I don't think the fact that this is a recordview rather than a standard
view makes a difference, but let me know if you think it makes a difference.
BEGIN_MESSAGE_MAP(CMyView, CRecordView)
ON_NOTIFY(NM_CLICK, IDC_CUSTOM1, OnGridClick)
ON_NOTIFY(NM_DBLCLK,IDC_CUSTOM1, OnGridDblClick)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()
I added this public function to the gridctrl class (in gridctrl.h) to enable my view
to retrieve which cell was clicked
CCellID GetLeftClickDownCell()const {return m_LeftClickDownCell;}
Here's the actual message handler:
void CMyView::OnGridClick()
{
int r = m_grid.GetLeftClickDownCell().row; //MY FUNCTION CALL
int c = m_grid.GetLeftClickDownCell().col;
if (!c && r)
HandleDblClickColZero(r,true);
return;
}
HandleDblClickColZero does a bunch of stuff with the data from that grid cell - or does nothing at all - it doesn't matter which - It gets fully executed, OnGridclick is fully executed AND THEN the following error comes up (regardless of whether HandleDblClickColZero even gets called by the if statement):
Unhandled exception in MyProgram.exe 0xC0000005:Access Violation
All I can do is tie the access violation to the grid control, but how or why I am at a loss for!
<-j->
|
|
|
|
|
jarbus wrote:
ON_NOTIFY(NM_CLICK, IDC_CUSTOM1, OnGridClick)
jarbus wrote:
void CMyView::OnGridClick()
jarbus wrote:
OnGridclick is fully executed AND THEN the following error comes up
jarbus wrote:
Unhandled exception in MyProgram.exe 0xC0000005:Access Violation
As I suspected, your instruction pointer is getting messed up when your OnGridClick() message handler returns. What you have to do is add the proper parameters that are expected to be there when you handle a WM_NOTIFY message.
void CMyView::OnGridClick(NMHDR *, LRESULT *) It has to do with the way the IP and parameters are pushed onto the stack when the function starts, and then popped off the stack when the function ends. If you do not declare the proper parameters you end up with a mismatch and the IP gets screwed as a result.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
jarbus wrote:
I added this public function to the gridctrl class (in gridctrl.h) to enable my view
to retrieve which cell was clicked
CCellID GetLeftClickDownCell()const {return m_LeftClickDownCell;}
The row and column of the cell clicked is passed in the NM_GRIDVIEW struct that is passed to you OnGidClick() function as the NMHDR struct.
void CMyView::OnGridClick(NMHDR *pNMHDR, LRESULT *)
{
NM_GRIDVIEW *pNM_GRIDVIEW = (NM_GRIDVIEW *)pNMHDR;
int r = pNM_GRIDVIEW->iRow;
int c = pNM_GRIDVIEW->iColumn;
...
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
I have made a dll using Microsoft Visual Studio 6, Win32 Platform. I want to import the dll in Delphi but I have problem in returning arrays and passing arrays as parameters.
For example
_declspec (dllexport) void ret(double* arr)
{
arr[0] = 1;
arr[1] = 2;
}
When I import this function in Delphi and pass an array as a parameter its values do not change.
Thank you!
modified 9-Mar-17 17:23pm.
|
|
|
|
|
shouldn't the code be:
_declspec (dllexport) void ret(double** arr)
{
*arr[0] = 1;
*arr[1] = 2;
}
????
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
No, his code should work as is. Strange that it is not.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
I'm stuck, I have a base class String, derived class Pstring, and trying to develop another derived class Pstring2. Pstring2 needs a function called left. Main will call the function by Text2.left(Text1,N) // Text2 is assigned the leftmost N characters from Text1. I'm having a hard time understanding how to connect Pstring2 to Pstring and String base class. Left member function of Pstring2 will carve out the left most 10 characters assigned to an object. The code I have so far is noted below. Can you give me some help?
#include <iostream>
using namespace std;
#include <cstring> //for strcpy(), etc.
#include <conio.h> //For getch()
////////////////////////////////////////////////////////////////
class String //user-defined string type
{
protected:
enum { SZ = 80 }; //size of all String objects
char str[SZ]; //holds a C-string
public:
String() //no-arg constructor
{ str[0] = '\0'; }
String( char s[] ) //1-arg constructor
{ strcpy(str,s); } //convert C-string to String
void display() //display the String
{ cout << str; }
operator char*()
{ return str;}
};
class Pstring : public String
{
public:
Pstring(char s[]): String(s)
{ if(strlen(s)>(SZ-1)){
strncpy(str,s,79);
str[79] = '\0';
}
else
String(s);
}
};
//class Pstring2 : public Pstring
//{
// public:
// Pstring2() : Pstring
//};
////////////////////////////////////////////////////////////////
int main()
{
cout << "THIS SENTENCE IS SHORTER THAN SZ:" << endl;
Pstring2 s1 = "Never read the instructions.";
s1.display();
cout << endl <<"THIS SENTENCE IS LONGER THAN SZ:" << endl;
Pstring2 s2 = "I would have to say that the greatest single achievement "
"of the American medica";
s2.display();
cout << endl <<"THIS SENTENCE DEMONSTRATES THE LEFT, MID AND RIGHT FUNCTIONS:" << endl;
Pstring2 s3 = "A long time ago in a galaxy far, far away.";
s3.display();
getch();
return 0;
}
Thanks!
|
|
|
|
|
No need to reply. I've been working on it feverishly the last 2 hours and finally got it to work!! Oh what a feeling!!
Thanks!
|
|
|
|
|
hello ,
I am writing an application that gets a password and a user name from the user I need to send these information to a web site to check wheter these information is correct or not then the web site should respond to my application with the result.
How can I send these information to the web site and how can I get the result from it.
|
|
|
|
|
You could post an encrypted version of the username and password (or at least just MD5 the password) in a query sent to the website, and parse the response.
This[^] article can help you implement the client side portion of the task. You'll obviously need server side support also.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I need a function, which gives me the handle to an active Window. I currently use the FindWindow function, but it also returns handles to already destroyed windows (which come from the same application that ran before and was closed). I found the IsWindow function and currently use it in combination with FindWindow, which looks like the following:
private int GetExistingWindow(string cl, string name)
{
int hWnd;
while(true)
{
if((hWnd = WM.FindWindow(cl, name)) == 0)
StartProcess();
if(WM.IsWindow(hWnd))
break;
}
return hWnd;
}
questions:
1) Can I do it that way (means returns a second call of FindWindow another handle than the first one or do I always get the same)
2) Is there a better method (single function, etc.)
Thanks
BTW: The code is written in C#(functions are well implemented), but due to the fact that it is a Win32 API question I decided to post it here.
|
|
|
|