|
Hello Erik
Here are my code C# code to send message...
public const int WM_COPYDATA = 0x004a;
[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
[MarshalAs(UnmanagedType.I4)]
public int dwData;
[MarshalAs(UnmanagedType.I4)]
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
string reqFiles ="Some value";
COPYDATASTRUCT data = new COPYDATASTRUCT();
data.dwData = 0;
data.cbData = reqFiles.Length * 2;
IntPtr lpStruct = Marshal.AllocHGlobal(Marshal.SizeOf(data));
Marshal.StructureToPtr(data, lpStruct, false);
Process[] processes1 = Process.GetProcessesByName("ProcessID");
IntPtr hTarget = processes1[0].MainWindowHandle;
SendMessage(hTarget, WM_COPYDATA, this.Handle, lpStruct);
//-----------------This is to receive message in C++ ------------------------------------
LRESULT APIENTRY MAxSubclassProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if (uMsg==WM_COPYDATA)
{
char str[256];
COPYDATASTRUCT *cds;
cds=(COPYDATASTRUCT *)lParam;
// receiving/handling message
}
}
If anything needed pls let me know..
Please help me to run in windows 7 machine.
Regards
shafiq
|
|
|
|
|
Ok. I think the problem is with your COPYDATASTRUCT. This is how it is declared in winuser.h:
typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
And these are the lines which declare ULONG_PTR and DWORD data types:
typedef unsigned __int3264 ULONG_PTR;
typedef unsigned long DWORD, *PDWORD, *LPDWORD;
So ULONG_PTR is like a 32 bit unsigned integer in a 32 bit platform and a 64 bit unsigned integer in a 64 bit platform, and DWORD is always a 32 bit unsigned integer. Nevertheless, you are using the int type and MarshalAs.UnmanagedType.I4 for both of them in your C# declaration, I mean, you treat both of them as 32 bit signed integer. It will usually work in a 32 bit platform (though it could fail), but it will usually fail in a 64 bit platform. In a 64 bit platform you should change the COPYDATASTRUCT declaration in your C# application like this:
StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
[MarshalAs(UnmanagedType.U8)]
public ulong dwData;
[MarshalAs(UnmanagedType.U4)]
public uint cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
I am not sure if it would work in a 32 bit platform becouse I don't know if dwData value would be appropiately truncated. You can try and if it does not work on a 32 bit platform you will have to make two versions of the struct. In this case, the 32 bit version of the struct should be like this:
StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT32
{
[MarshalAs(UnmanagedType.U4)]
public uint dwData;
[MarshalAs(UnmanagedType.U4)]
public uint cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
You have the System.Environment class to know which platform you are using. If you are using 4.0 version of .NET you can use System.Environment.Is64BitOperatingSystem, and if you are using a previous version of .NET you will have to go a little deeper into System.Environment (OSVersion, Platform, etc.).
|
|
|
|
|
hi Erik
Bad luck for me but anyhow thanks for nice reply..
If you get any other solution please let me know.
Thanks
|
|
|
|
|
I just finished writing my own library using WM_COPYDATA, and would happy to help you.
I've learnt a few interesting things about WM_COPYDATA, like this:
- It doesn't work across UAC, i.e. communicating processes must run in the same trust level for the messaging to work;
- This messaging doesn't work for different bit platforms, i.e. communicating processes must be either 32-bit or 64-bit, no mix is supported.
If you interested, my library allows easy communication with WM_COPYDATA for any .NET application
|
|
|
|
|
Hi,
Is it possible to get computer name from "IP_adress" in local network.
|
|
|
|
|
Use Dns.GetHostEntry to retrieve an IPHostEntry , and get the HostName from this.
|
|
|
|
|
Try System.Environment.MachineName
..Go Green..
|
|
|
|
|
Ankurm/ wrote: System.Environment.MachineName
Simple way of getting MachineName
you should focus on question which is about get Computer Name based on Ip Address and Pete O'Hanlon answered better and noting can be better than.
|
|
|
|
|
Code to get IP address and then host name from that IP Address rather than getting the host name directly doesn't make much sense to me.
I don't know why I feel that the user wants to ask if he can get the computer name from IP address available to him, which is not possible until he has an "IP Address - Host Name" mapping records available with him.
I may be wrong though.
..Go Green..
|
|
|
|
|
If the question doesn't make sense to you, don't provide an answer. The question that was asked was clear, concise and specific. I wish all questions were like this one. Your comment above is valid, however, and I agree with you somewhat, but perhaps he is doing some log file post resolution of the host name and the log file only holds IPs.(for example only). You should have provided this information with your initial answer and people probably wouldn't have voted you down.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
PogoboyKramer wrote: If the question doesn't make sense to you, don't provide an answer.
Read the comments again. I never said the question doesn't make sense to me. I was rather supporting my answer with the comment.
PogoboyKramer wrote: but perhaps he is doing some log file post resolution of the host name and the log file only holds IPs.(for example only).
You mean you have a log file which contains IP address only and you want to get the host name from IP addresses. How do you think that would be possible. Again, my previous comment answers this question.
PogoboyKramer wrote: You should have provided this information with your initial answer and people probably wouldn't have voted you down.
I do agree to this and am sorry about it.
..Go Green..
|
|
|
|
|
Thanks for the response. (I didn't mean to sound priskish, BTW) The IP resolution from log file is something I did a couple years back, but for the life of me, I can't remember how. Maybe I'm just blocking out the bad memories. Have a five for this one.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Thanks!
Cheers!
Ankur
..Go Green..
|
|
|
|
|
Hello Experts,
I have an Image in which have Some text.
I want to write program for find the text from image.
So if you have any suggetion please help.
Thanks
If you can think then I Can.
|
|
|
|
|
Go through the below link this may helps you
Neural Network OCR[^]
Rajesh B --> A Simple Programmer <--
|
|
|
|
|
Are you talking about OCR? or are you talking about extracting text hidden inside image files?
|
|
|
|
|
No sir,
I have an Image in which have some information in visible form. And i want to get it as a String Format.
Thanks for reply
If you can think then I Can.
|
|
|
|
|
Use OCR, MODI or Atalasoft
|
|
|
|
|
i have a array called rArray and it consist of a list of integers.
how do i compare it to find which one is the smallest or the biggest, assigning smallest to a textbox and biggest to a textbox.
for (int y = 0; y < listBox6.Items.Count; y++)
{
if (rArray[y] < r)
{
}
r is an integer.
modified on Tuesday, November 9, 2010 10:33 PM
|
|
|
|
|
This is the umptieth day you are trying to get either the min and max, or the average (not sure which), of a collection of numbers, which is very elementary. Rather than asking basic questions in a random order, I would strongly recommend you buy and study an introductory book on C#; that will teach you the basics of the language, of programming in general, and of Windows programming in particular. In one week's time you could acquire a lot of knowledge, well structured, explained and illustrated, and by doing so raise yourself to a whole different level.
If you don't want to do that, I can only suggest you choose and read some of the excellent articles here on CodeProject (stick to the ones that have a score of at least 4 out of 5), as you are in need of coding examples.
|
|
|
|
|
This[^] article discusses sort (using LINQ) on string arrays - but the concepts for integers is fairly similar.
The funniest thing about this particular signature is that by the time you realise it doesn't say anything it's too late to stop reading it.
My latest tip/trick
Visit the Hindi forum here.
|
|
|
|
|
LINQ also has functions for Max and Min so it can be as simple as...
int[] nums = new int[]{1, 2, 3};
textBoxMax.Text = nums.Max().ToString();
textBoxMin.Text = nums.Min().ToString();
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
What do you think you should do? This is a fairly basic comparison problem, and you should be able to work it out by just writing out the steps that you would do to perform the same task. Break the problem down into smaller and smaller steps and then you will reach your solution.
|
|
|
|
|
Based on your question I would assume this is some kind of homework assignment so you should definitely use my other post suggestion for LINQ and not explain your method in any shape, way or form.... then your lesson is learned
The reason why this must be a homework assignment is because it is so basic. If you where trying to do this for any other reason (like a career in programming) then you should have more of an interest, which would mean you would have already gone down the route Luc had suggested (which is certainly the way forward) and would not be posting this question ANYWHERE.
The other option is that the potential money for a career in programming is your motivation but unfortunately with great programming career comes great need for ability to think
...maybe I am being too harsh...
int min = nums[0];
int max = nums[0];
foreach(int i in nums){
if(i < min)
min = i;
if(i > max)
max = i;
}
...now the challenge: can you work out how to create nums?
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
musefan wrote: ...now the challenge: can you work out how to create nums?
That's easy. You post a follow up question "Urgntz. How to create nums."
|
|
|
|