|
Why don't you try some zip libraries for .NET? E.g. ICSharpCode.SharpZipLib.dll.
I'd rather look for .NET alternatives than try to deal with the problems of running java code from C#.
Another alternative would be to write a java "executable" which you can call with System.Diagnostics.Process.Start()
|
|
|
|
|
Trying to avoid 3rd party libs. If no solution available then we may need to use 3rd party libs.
Do you know any sample code that explains about writting wrapper DLL using JNI to call Java?
|
|
|
|
|
Why are you doing this? There is no point in writing a C# program that requires a Java library since you have to cross too many boundaries (managed -> unmanaged -> JVM) to make it work. Write your library in C# and do it the easy way.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
To be fair to him, he is trying to follow the advice given here[^].
|
|
|
|
|
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
Three approaches discussed here[^] - all worth considering.
|
|
|
|
|
In java and only in java.
1. Wrap the java code in a java exe framework (so it can be run at the command line with 'java')
2. Add a communication layer (sockets, files or stdio) written in java.
3. Test the above.
In C# and only C#.
1. Use Process to run the above
2. Write code to talk to the communication layer of the above.
Benefits.
A. Java code is all java.
B. C# code is all C#
C. No reliance on third parties.
D. Unit testing can be done without relying on the other language.
|
|
|
|
|
Hello all,
How can i perform multiple mouse clicks at the same time on desktop screen using C# code?????
e.g. when i click on the mouse button I will perform multiple clicks on differents pre-defined x,y positions on the screen
modified 10-Jan-12 3:09am.
|
|
|
|
|
You are going to have to use a User32 API function mouse_event . First off, import System.Runtime.InteropServices into your class, then declare the function import:-
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
You then need to declare constants for the relevant mouse actions :-
private const int MOUSE_LEFTDOWN = 0x02;
private const int MOUSE_LEFTUP = 0x04;
private const int MOUSE_RIGHTDOWN = 0x08;
private const int MOUSE_RIGHTUP = 0x10;
Then you can create a function that clicks the mouse at a specific location on the screen :-
public void ClickMouse(int x, int y)
{
Cursor.Position = new Point(x, y);
mouse_event(MOUSE_LEFTDOWN | MOUSE_LEFTUP, x, y, 0, 0);
}
You should be aware that there could be snags with this, i.e. the speed with which you click could mean mouse clicks getting lost if they are too fast, etc. Also, you will need to be aware of the users screen resolution, else if you hard code specific points to click, they will be off screen if the users resolution is less than yours etc.
Hope this helps
When I was a coder, we worked on algorithms. Today, we memorize APIs for countless libraries — those libraries have the algorithms - Eric Allman
|
|
|
|
|
thank you for you perfect answer but really i need to know how exactly can i perform multiple clicks on the same time
regards,
Ahmad
|
|
|
|
|
You have an excellent answer from Wayne (got my +5) here to the question of how to "trigger" a bunch of clicks, but the fact remains that MouseClicks go in an event queue which is sequential.
The mind boggles that the new parallel extensions to .NET might allow "virtual" simultaneous clicks: but I do think we can safely leave out the idea you are using multiple-mice
So I am curious to ask you what your purpose is here ? What does this secondary "cascade" of clicks actually do ?
best, Bill
"It is the mark of an educated mind to be able to entertain a thought without accepting it." Aristotle
|
|
|
|
|
thank you Bill for your interaction, mmmm I know that my question is very strange but i need this to create bugs in games 
|
|
|
|
|
Hello all,
I need to run a multi-process app, in which each process keeps 20-40 threads that keep an object state and performs calculations based on the state of the object, ON DEMAND (from the main thread).
Each thread performs a discrete calculation and returns an answer (to the main thread), and then WAITS for the next request
What's the best practice for this kind of app?
Should I keep all objects in the main thread and create new short-life thread that perform only the one action,
OR
Keep the threads alive, and have them use WaitHandle to wait for the next request,
Others suggestions are most welcome?
Tzumer
|
|
|
|
|
Edo Tzumer wrote: Others suggestions are most welcome?
Upgrade the threads to processes; you said multi-process, meaning that you could simplify the architecture to something that runs an external process on demand and catches it output. The external process would then become a small console-app, containing the threading-code. That would mean more isolation and simpler maintenance.
Edo Tzumer wrote: Should I keep all objects in the main thread and create new short-life thread that perform only the one action,
OR
Keep the threads alive, and have them use WaitHandle to wait for the next request,
You'd only keep the threads alive if it were too expensive to recreate them. Short-life threads is what the threadpool is for, albeit you might want to check out the Smart Thread Pool[^]-article.
Bastard Programmer from Hell
|
|
|
|
|
Tnx,
Can't upgrade them to processes though,
the whole constelation is already one process with many threads,
and there are many processes like this one on the same server, doing the same work in parallel, (and many servers doing so in parallel if we already mention the system, but that does not change the question),
apart from that a process sounds like a major overhead and there's the problem of sharing information, since I need to use objects on the main thread, in each of the calculations.
Actually the tip on the thread pool sounds great, it's the approach of having the objects live in the main thread, but perform the alleged calculation in a thread, but INSTEAD of creating and killing them, to use a thread pool,
Gee, that sounds like a great idea!
thanks a bunch mate, I will dig into the concept...
Tzumer
|
|
|
|
|
If you are using a high enough version of .NET, I'd suggest that you look into the Task Parallel Library. Honestly, this library makes so many things so easy to do - you'll love it.
|
|
|
|
|
Tnx again!
Guess it was worth it moving to .NET 4 last August...
Tzumer
|
|
|
|
|
Anyone know how I can sniff a process? and not every process?? in the below source code By Hitesh Sharma:
A Network Sniffer in C#
Thanks you all.
|
|
|
|
|
You should ask the question in the article's forum rather than here
No comment
|
|
|
|
|
What you are looking for is something like a process explorer that would give you a list of processes.
You can use the Process class.
Process[] list = Process.GetProcesses();
foreach(Process proc in list){
Console.WriteLine("Process: {0} ID: {1}", proc.ProcessName, proc.Id);
}
|
|
|
|
|
Well, I want to Sniff the connection of a Process, dunno if I can do that really... its it possible?
|
|
|
|
|
terrinfo wrote: I want to Sniff the connection of a Process
What exactly do you mean by this? Sniff what, connection to what?
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
Lets say that I got a program running and it got it own (PID) 3250
With the code I posted above, I can sniff the network (inconming and outgoing traffic in my IP)... but I would like to just "sniff" that process: 3250.
Another way, is to get all process PIDs from those traffic I am sniffing, then I can filter the process PID I want to look at.
Hope you that can understand me now!
Thanks very very much.
|
|
|
|
|
If the process id is held inside the network messages then it should not be too difficult. If the process id is not part of the messages then you would need to find the link from the routing tables and port numbers.
However, since this question really refers to a published article I think you would be better asking the question in the forum at the end of the article.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
ipNode.Nodes.Add("Ver: " + ipHeader.Version);
ipNode.Nodes.Add("Header Length: " + ipHeader.HeaderLength);
ipNode.Nodes.Add("Differntiated Services: " + ipHeader.DifferentiatedServices);
ipNode.Nodes.Add("Total Length: " + ipHeader.TotalLength);
ipNode.Nodes.Add("Identification: " + ipHeader.Identification);
ipNode.Nodes.Add("Flags: " + ipHeader.Flags);
ipNode.Nodes.Add("Fragmentation Offset: " + ipHeader.FragmentationOffset);
ipNode.Nodes.Add("Time to live: " + ipHeader.TTL);
ipNode.Nodes.Add("Source Port: " + udpHeader.SourcePort);
ipNode.Nodes.Add("Destination Port: " + udpHeader.DestinationPort);
ipNode.Nodes.Add("Length: " + udpHeader.Length);
ipNode.Nodes.Add("Checksum: " + udpHeader.Checksum);
There's all except the process 
|
|
|
|