|
Use CRgn::CombineRgn[^] in RGN_AND mode. This should return NULLREGION (or possible ERROR , I guess) if the intersection is empty.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thank you it helped me alot
|
|
|
|
|
I am part of a robotics team at my university and we are working on a robot for a competition. We are using a SICK LMS221 Lidar for obstacle avoidance and web cams to track the course boarders. The borders are spray-painted white or yellow lines and they can be broken lines, much like the ones that one would find on an expressway. The competition is pretty much an obstacle course in which we have to stay in between the lines and avoid obstacles.
My question is how could I make a webcam app that tracks the white lines. I want it to identify the lines vs the ground and somehow saturate the color so it only reads white or yellow. I have tried the "Real Time Object Tracking in C++" app on this site but it has to have a static background. My app needs to scan a moving "background" and identify white or yellow. I am a bit of a C++ noob but I really want to learn how to do this. My first "accomplishment" was getting a simple webcam app to compile and I understood how everything works accept for the fact that it uses the OpenGL library to wrap the image in 2D. There must be a simpler way to do this. Any help would be greatly appreciated!
|
|
|
|
|
This article[^] shows how to use Windows Image Acquisition to get images from a webcam. It's written in C#, but WIA is a COM library, so easy enough to access from C++.
It doesn't use OpenGL
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hello all,
working on a research project where I am taking a small exe and covert to hex pass it to another exe and have it execute the binary in a generic void * method returning void * but not sure how to do it, I know how to do inline ASM calls, but what do you feed the hexed up binary data to. Again this is for a research project NOT production as I am well aware of the potential hazards here. So any ideas anyone?
|
|
|
|
|
Hi,
an EXE file does not contain just executable code, it is a complex thing describing all that is needed to load several segments of code and data, load other required DLL files, etc.
You can launch an EXE file to run in a separate process by calling the Win32 function ShellExecute[^].
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
That's very likely not going to work. Executables rely on the OS loader to a) load the executables at a specific address (40000 hex), b) load DLLs and perform relocations on them, c) make data available at specific addresses. You could try to perform functionality equivalent to the OS loader, but I don't think it would work.
One approach that would involve a lot of work, but could well work, would be to implement a virtual process within the host process, a bit like how software like VMWare lets you run an OS on a virtual machine.
The first thing to do is get a very good understanding of the Windows OS loader and the PE executable format. This Wndows internals book[^] is an excellent place to start.
This article[^] is a good description of what's contained in a PE executable file, which shows you what the OS loader has to deal with when loading an executable.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Several years ago I had the task of writing a machine code generator for a script engine. In other words, a JIT mechanism to accelerate the execution speed of our scripts. I didn't have the first clue of how to even start but I figured out a test for the proof of principle.
First, I decided to implement a simple little function. It doesn't really matter what this is but it needs to be simple. Here is one to compare two integers :
int CompareValues( int valueA, int valueB )
{
int rc = 0;
if( valueA < valueB )
rc = -1;
else if( valueA > valueB )
rc = 1;
return rc;
}
Then I defined a type that is a pointer to a function with that prototype signature :
typedef int (*CompareFunc)( int valueA, int valueB );
Next I wrote a test program to do something like the following :
int TestMethod()
{
CompareFunc func = CompareValues;
int valueA = 42;
int valueB = 96;
int returnValue = (*func)( valueA, valueB );
return returnValue;
}
The next step is a little more involved. You have to go to the settings for your project and in the C++ section select Output Files and then enable the Assembly, Machine Code, and Source option. Now rebuild your test app and take a look at the machine code for the CompareValues function. Copy the machine code bytes and place them into an array of BYTEs :
static BYTE codeBytes[] = { ... };
Now you should be able to "invoke" this code with something like the following :
int TestMethod()
{
CompareFunc func = (CompareFunc)codeBytes;
int valueA = 42;
int valueB = 96;
int returnValue = (*func)( valueA, valueB );
return returnValue;
}
and that's basically it. You will probably have to experiment a little to make things work right like possibly using assembly statements to push your variables onto the stack before invoking the function and things like that.
It has been a long time, ten years or so, since I did this but I used a technique just like this to get started. My JIT compiler would emit the code bytes into a buffer and then execute them using a mechanism nearly identical to this.
You should be able to get the basics of this down fairly quickly. If you can't then this could be a very difficult project for you to accomplish.
|
|
|
|
|
THANKS!! THAT IS EXACTLY What Im looking to do, and the same sort of project actually. THANKS AGAIN
|
|
|
|
|
Please please help with this simple Q from a C++ newbie....I spent hours trying to find the answer online...
I want to run this on a linux box. Open a file containing a list of file names and then run a linux commands on each of the list for example:
The file contains a list of files names eg:
test
test1
test2
test3
How do I code in C so that it opens the file and then foreach of the elements do a system command eg: ls
in perl it would be something like:
#!/usr/local/bin/perl
while(<>){
chomp;
$cmd="ls $_";
system($cmd);
print "$cmd\n";
}
Thanks in advance!
|
|
|
|
|
Use fgets to read individual lines from a file.
Use strcat to append the file name to the command (just make sure the command is in a long enough string to start with).
C has a system function just like Perl as well.
It's easier in C++, using std::getline to read lines from a file and the std::string class to build the command:
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char** argv)
{
std::ifstream f(argv[1]);
std::string s;
while (std::getline(f, s))
{
system((std::string("ls -l ") + s).c_str());
}
}
Easy enough (and works on OS X, which is close enough to Linux)
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thanks very much Stuart!
Any chance of typing the entire code in C as well?
thanks a lot again!
|
|
|
|
|
meixiang6 wrote: Any chance of typing the entire code in C as well?
I'll leave that as an exercise for the reader...you remember I said it was easier in C++
It's not too much different - fgets is roughly equivalent to getline. Rather than adding string objects together, you use strcpy to copy the command into a character buffer, then strcat to add the line you've read from the file to the end of the buffer. Then you pass the buffer to the system command.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
thanks Stuart for the information, I am a very new newbie and have no idea how that looks like in C, any chance of someone writing that in C ?
apologizes for the inconvenience
|
|
|
|
|
You'll gain a lot more learning how to do it yourself.
This page[^] has code that reads a file line by line (search for 'fgets').
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thanks Stuart, I got it working with this, not sure if the code is right thou but it works...
#include <stdio.h>
#include <string.h>
int main()
{
FILE *f;
char string[1000];
char str[1000];
f = fopen("file.txt", "r");
if(!f) {
printf("Couldn't open file.txtn");
return 1;
}
while(fgets(str, 1000, f)) {
/* printf("%s", str); */
strcpy (string, "ls -la ");
strcat (string, str);
system (string);
}
fclose(f);
return 0;
}
<div class="ForumMod">modified on Thursday, February 19, 2009 8:56 PM</div>
|
|
|
|
|
meixiang6 wrote: char string[1000];
I know this is being nit-picky, but you might want to make this 7 bytes larger than str . If str contains 999 bytes, copying that plus "ls -la " is going to overflow string .
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Aside from what David said, that code's fine
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
am a newbie to win32 console programming and i was given
to
Create the editor of resources files of application, which allows to form the following facility
-the icon
- the menu
- the text
- the dialogue windows
i was able to write a code to for the text but i cant for the icon , i really dont have idea.
Please help so we could share ideas together thanks
|
|
|
|
|
As newbie, they could give you as well the task to discover the origin of the Universe, I suppose.
My solidarity.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: discover the origin of the Universe
No problem, it is where it always has been: at (0, 0, 0, 0).
You may add more dimensions if you are so inclined.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Luc Pattyn wrote: it is where it always has been: at (0, 0, 0, 0).
What is that RGBA values?
|
|
|
|
|
It holds true for both xyzt and ARGB (those were the really dark ages).
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Luc Pattyn wrote: those were the really dark ages
Now you're getting the hang of it! That's as bad as anything I could come up with.
|
|
|
|
|
So it's good I reckon
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|