|
you could use COM automation to do that.
This signature was proudly tested on animals.
|
|
|
|
|
thank you ,
please suggest some MSDN or other site to have reference.
new to writing such codes
|
|
|
|
|
|
How to join two programes?
I’ve got two good fuctioning programs. The first one counts combinations with giving the elements of them. There are 180 elements in each combination. Here’s the code:
<code>#include "IndexCombination.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <map>
#include <sstream>
#include <mem.h>
#include <conio.h>
using namespace std;
using namespace stdcomb;
bool GetNextComb(std::vector<unsigned int> &vi);
struct Element
{
char name[6];
int numbers[30];
char chain[90];
};
const Element elements[] = {
{
"ia11",
{3,9,17,21,24,31,33,36,42,49,4,8,19,22,28,30,34,39,43,47,2,6,10,13,14,25,29,37,38,46},
"3,9,17,21,24,31,33,36,42,49,4,8,19,22,28,30,34,39,43,47,2,6,10,13,14,25,29,37,38,46"
}, {
"ia34",
{1,6,12,15,22,27,31,32,41,42,4,7,14,17,23,30,33,36,45,48,2,9,13,18,21,26,34,39,44,49},
"1,6,12,15,22,27,31,32,41,42,4,7,14,17,23,30,33,36,45,48,2,9,13,18,21,26,34,39,44,49"
}, {
"ia72",
{3,8,11,18,22,25,36,37,43,46,1,6,16,17,23,28,35,40,41,44,2,5,12,19,24,27,31,34,42,49},
"3,8,11,18,22,25,36,37,43,46,1,6,16,17,23,28,35,40,41,44,2,5,12,19,24,27,31,34,42,49"
}, {
"ia167",
{3,4,12,15,21,28,32,39,47,48,6,9,16,17,29,30,31,38,41,42,7,8,11,20,26,27,34,35,45,46},
"3,4,12,15,21,28,32,39,47,48,6,9,16,17,29,30,31,38,41,42,7,8,11,20,26,27,34,35,45,46"
}, {
"ia190",
{3,10,11,14,22,23,32,35,43,44,6,9,16,19,24,29,37,38,45,48,2,5,13,18,25,30,31,40,41,0},
"3,10,11,14,22,23,32,35,43,44,6,9,16,19,24,29,37,38,45,48,2,5,13,18,25,30,31,40,41,0"
}, {
"ia21",
{2,5,16,19,25,30,34,39,45,48,1,9,12,13,21,24,33,36,44,49,3,8,15,20,23,26,35,40,43,46},
"2,5,16,19,25,30,34,39,45,48,1,9,12,13,21,24,33,36,44,49,3,8,15,20,23,26,35,40,43,46"
}, {
"ia64",
{6,9,13,20,28,29,33,40,43,48,2,7,16,19,24,27,31,34,44,47,5,8,14,17,21,30,32,37,41,46},
"6,9,13,20,28,29,33,40,43,48,2,7,16,19,24,27,31,34,44,47,5,8,14,17,21,30,32,37,41,46"
}, {
"ia102",
{4,9,14,19,22,29,35,38,46,47,5,8,13,16,21,26,33,40,41,48,6,7,15,17,28,30,32,39,42,45},
"4,9,14,19,22,29,35,38,46,47,5,8,13,16,21,26,33,40,41,48,6,7,15,17,28,30,32,39,42,45"
}, {
"ia178",
{6,9,15,20,23,24,37,38,42,45,7,8,16,19,22,25,34,39,43,46,1,2,17,18,26,29,31,40,47,0},
"6,9,15,20,23,24,37,38,42,45,7,8,16,19,22,25,34,39,43,46,1,2,17,18,26,29,31,40,47,0"
}, {
"ia180",
{1,4,13,18,27,30,33,38,45,46,2,3,12,15,22,23,39,40,44,47,8,9,11,17,24,25,32,37,49,0},
"1,4,13,18,27,30,33,38,45,46,2,3,12,15,22,23,39,40,44,47,8,9,11,17,24,25,32,37,49,0"
}
};
int main(int argc, char *argv[])
{
CIdxComb cb;
cb.SetSizes(10,6);
vector<unsigned int> combination(6);
combination[0] = 0;
combination[1] = 1;
combination[2] = 2;
combination[3] = 3;
combination[4] = 4;
combination[5] = 5;
int Total = 0;
do {
Total++;
cout << "Combination number. " << Total << endl;
for (unsigned i = 0; i < combination.size(); i++)
{
const Element &element = elements[combination[i]];
cout << element.name << ": " << element.chain << endl;
// tu musi być druga pętla for
}
}
while(cb.GetNextComb(combination));
cout << endl;
system("PAUSE");
return EXIT_SUCCESS;
}</code>The second program counts occurrances of the elements in given array and shows only those which values are equal or bigger than six.
#include <iostream>
#include <mem.h>
#include <conio.h>
using namespace std;
int main()
{
int TestArray[] = {
3,10,11,14,22,23,32,35,43, 44,6,9,16,19,24,29,37,38,45,48, 2,5,13,18,25,30,31,40,41,0,
2,5,16,19,25,30,34,39,45,48, 1,9,12,13,21,24,33,36,44,49, 3,8,15,20,23,26,35,40,43,46,
6,9,13,20,28,29,33,40,43,48, 2,7,16,19,24,27,31,34,44,47, 5,8,14,17,21,30,32,37,41,46,
4,9,14,19,22,29,35,38,46,47, 5,8,13,16,21,26,33,40,41,48, 6,7,15,17,28,30,32,39,42,45,
6,9,15,20,23,24,37,38,42,45, 7,8,16,19,22,25,34,39,43,46, 1,2,17,18,26,29,31,40,47,0,
1,4,13,18,27,30,33,38,45,46, 2,3,12,15,22,23,39,40,44,47, 8,9,11,17,24,25,32,37,49,0};
const int n = sizeof(TestArray) / sizeof(int);//combination.size();
const int range = 100;
const int minval = 6;
int occurences[range];
memset(occurences,0,range*sizeof(int));//combination.size();
for (int i=0; i<n; ++i)
occurences[TestArray[i]]++;
for (int i=0; i<range; ++i)
if (occurences[i]>=minval)
cout << "number " << i << " occurs " << occurences[i] << " times\n";
getch();
return 0;
}
I’d like to join them in one program. The Output should look like this:
Combination number 1
Number 3 occurs 6 times
Number 48 occurs 7 times
Number 0 occurs 8 times
Combination number 2
Number 5 occurs 6 times
Etc.
What kind of counter or what loops should I use to successfully combine these programs?
|
|
|
|
|
A rhetorical question -
Aren't you embarrassed to admit that you can't do your own homework?
|
|
|
|
|
Oh.Yes,I am. Thanks for support!
|
|
|
|
|
My pleasure.
I hear McDonalds is hiring... maybe it'd be more appropriate for you.
|
|
|
|
|
If this is so easy for you, why don't you do it, big Lunatic head?
|
|
|
|
|
Waldemar Ork wrote: If this is so easy for you, why don't you do it, big Lunatic head?
Because it's not his job to do your homework, it's your job.
|
|
|
|
|
Why the hell should I? You can't be bothered to make any effort beyond cutting and pasting your homework problem into the forum; you're too lazy or stupid to make even the feeblest of attempts on your own. So why the hell should I?
|
|
|
|
|
Because that's you who says 'I'm clever', that's obvious at the first sight. I personally might be even called stupid, because programming isn't what I like most. Just have to do it. But I can assure you I'm not a stupid person at all. I can do lots of things and I'm not a snob. If you don't want to do it, don't do it. Just show off replying to other posts in the same way. Good luck!
|
|
|
|
|
Right now you've got two separate main() functions. How about renaming each of those to something more appropriate, and then create a new main() function that calls each of them?
"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
|
|
|
|
|
i need information about online courses/ training for vc++ (basic and advanced).
can u please provide me.
thanks & regards
|
|
|
|
|
|
can anyone hel me writng d code for drawing butterfly in c grahics which can run in turbo c
|
|
|
|
|
aviparida wrote: can anyone hel me writng d code for drawing butterfly in c grahics which can run in turbo c
Why do you keep repeating this question? If you want to draw a butterfly then I would suggest you get some books and learn about graphics programming.
|
|
|
|
|
See for instance [^].
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]
|
|
|
|
|
Hi,
I got the process ids of the excel application instances and I need to get windows handler for that.
I tried with AccessibleObjectFromWindow function as below, but I'm getting E_FAIL in hr. Any help is appreciated. Thanks in advance.
HWND hwnd = (HWND)FindWindow(_T("XLMAIN"), NULL);
Excel::Window* pWindow = NULL;
HRESULT hr = AccessibleObjectFromWindow(hwnd, OBJID_NATIVEOM, __uuidof(Excel::Window), (void**)&pWindow);
|
|
|
|
|
If the excel is executed by you, you can get more info by CreateProcess() to run the excel.
or when multiple excels are running, which one you can get?
|
|
|
|
|
Main aim is to get the window handlers of the existing excel application instances. If there are two excel applications opened, I need to get the window handlers for those two instances. From the window handlers, I need to get excel application pointers. Hope you understood the scenario. Pls let me know if you need more clarification
|
|
|
|
|
I did something else, hope it help.
EnamWindows() can get all top level windows, in your case, excel is top one, maybe you can use the function to get more info to find excels.
|
|
|
|
|
I tried with EnumWindows function also. Below is the complete code. Please mention, if I missed anything.
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
DWORD dwThreadId, dwProcessId;
HINSTANCE hInstance;
char String[255];
HANDLE hProcess;
dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcessId);
}
int _tmain(int argc, _TCHAR* argv[])
{
HWND hwnd = (HWND)FindWindow(_T("XLMAIN"), NULL);
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return 1;
cProcesses = cbNeeded / sizeof(DWORD);
for (i=0; i<cProcesses; i++ )
{
if( aProcesses[i] != 0 )
{
TCHAR szProcessName[MAX_PATH] = _T("<unknown>");
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i] );
if ( NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
if(_wcsicmp(szProcessName,L"EXCEL.EXE") == 0)
{
cout<< szProcessName << "--" << aProcesses[i] <<endl;
Excel::Window* pWindow = NULL;
pid = aProcesses[i];
EnumWindows( EnumWindowsProc, NULL);
HRESULT hr = AccessibleObjectFromWindow(hwnd, OBJID_NATIVEOM, __uuidof(Excel::Window), (void**)&pWindow);
if (hr == S_OK)
{
}
}
}
}
_tprintf( TEXT("%s (PID: %u)\n"), szProcessName, aProcesses[i] );
CloseHandle( hProcess );
}
}
return 0;
}
|
|
|
|
|
NarVish wrote: ...and I need to get windows handler for that.
What's a window handler?
"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
|
|
|
|
|
I suggest you DO NOT ask your silly questions everywhere.
If you don't know what a window handle is, you still have a choice: shut up.
|
|
|
|
|
a process created a thread (say thread-a), if something happens in thread-a, the thread calls process, then process creates another thread thread-b.
thread-a and thread-b must be in same thread level.
how to general the thread-to-process call? PostThreadMessage() can be a choice, is there other simpler ways than PostThreadMessage()? or PosttThreadMessage() is the easist way in the case?
|
|
|
|
|