|
Jagdish V. Bhimbha wrote: Open a file handle to EXE2 from EXE1, using CreateFile, with the flag "FILE_FLAG_DELETE_ON_CLOSE".
This does not work on all platforms. Sometimes CreateFile() will return INVALID_HANDLE_VALUE and GetLastError() will return ERROR_ACCESS_DENIED . This is because the OS supports the ability to share a file with delete access.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hi,
If you want to delete the folder after deleting the files.
You this syntax.
_wrmdir(dirname );
Thanks and Regards.
SANTHOSH V
|
|
|
|
|
VCProgrammer wrote: my problem is it deletes all the file from the folder but leaves itself and the folder there only.... how can i delete it.
Since your exe is running, it could not be deleted. Better mark it for deletion after next reboot. You can use the api MoveFileEx() with flag MOVEFILE_DELAY_UNTIL_REBOOT . Check here for the code snippet - http://weseetips.com/2008/05/19/how-to-mark-your-file-for-deletion-after-next-reboot/[^]
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hey guys, I can't seem to figure out my problem trying to print out the data to the tcp packet. Please, someone help me out.. I've been searching the internet, trying to find something in the Wireshark source, I'm lost and confused... If you want the full source, please say something. Thanks!
typedef struct IP_Address
{
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
} ip_addr;
typedef struct IPv4_Header
{
u_char ver_ihl;
u_char tos;
u_short tlen;
u_short id;
u_short flags_off;
u_char ttl;
u_char proto;
u_short crc;
ip_addr srcaddr;
ip_addr dstaddr;
u_int opt_pad;
} ipv4_hdr;
typedef struct TCP_Header
{
u_short srcport;
u_short dstport;
u_int seq;
u_int ack;
u_char offset;
u_char reserved;
u_short window;
u_short crc;
u_int opt_pad;
u_char data[65535];
} tcp_hdr;
for (;;)
{
CErr = pcap_next_ex(edev_open, &pkt_header, &pkt_data);
if (CErr == -1)
{
cout<< "Encountered an error while reading!\n";
pcap_close(edev_open);
return 0;
}
switch (CErr)
{
case 0:
{
break;
}
case 1:
{
ih = (ipv4_hdr*) (pkt_data + 14);
th = (tcp_hdr*) ( (u_char*)ih + ((ih->ver_ihl & 0xF0) * 4) );
break;
}
case -2:
{
cout<< "End of Dump File!\n";
break;
}
}
}
|
|
|
|
|
|
Hi,
Im OnTImer(), i use the values stored in structure ,but when timer is on..it shows correct value but i invoke another timer in dialog,after sometime,,,First timer gets wrong value from structure. How its possible..THis is my code..
STRIG CirTab[] = { // circle sin, cos, table
{ 0, -7999 },
{ 836, -7956 },
{ 1663, -7825 },
{ 2472, -7608 },
{ 3253, -7308 },
{ 3999, -6928 },
{ 4702, -6472 },
{ 5353, -5945 },
{ 5945, -5353 },
{ 6472, -4702 },
{ 6928, -4000 },
{ 7308, -3253 },
{ 7608, -2472 },
{ 7825, -1663 },
{ 7956, -836 }
};
OnTImer code has
LineTo(hDC, clockCenter.x + (INT)(((LONG)(CirTab[pos].sin) * (radius)) / CLKSCALE),
clockCenter.y + (INT)(((LONG)(CirTab[pos].cos) * (radius)) / CLKSCALE));
THe bolded varaible get correct value until the second timer (Dialog timer) getinvoked .Here 'pos' is seconds in time.
At First second it get value of { 0,-7999 } but second timer inviked after some time it shows then values as {12245,23452) but its not present in CirTab[].
Whats the reason??Pls..any suggestion??
Anu
|
|
|
|
|
Anu_Bala wrote:
LineTo(hDC, clockCenter.x + (INT)(((LONG)(CirTab[pos].sin) * (radius)) / CLKSCALE),
clockCenter.y + (INT)(((LONG)(CirTab[pos].cos) * (radius)) / CLKSCALE));
Anu_Bala wrote: Here 'pos' is seconds in time.
So you are accessing the array by using pos which is in seconds. But in the array you have less than 15 members and if the seconds go beyond 15 it will access from outside array which gives you a junk value thats not present in array. In summery you're accessing out of array.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
modified on Tuesday, June 17, 2008 1:04 AM
|
|
|
|
|
Actually my array contains 60 members.For here just i post only 15members for your reference.Sorry for thsi confusion.
Anu
|
|
|
|
|
1) Could you check whether the pos goes out of index?
2) Check whether your array values are getting updated by some bad code. Watch the array when you've the error.
Could you post the code snippet?
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
No, pos shows only between 1 and 60 only.
Arrays doesnot get changed and also the array is not used in sometoher place, used only in this line.
My code is to draw seconds needle in clock image.
DrwaHnad function is called in OnTimer()
DrawHand(register HDC hDC,INT pos,HPEN hPen,INT scale,INT patMode)
{
INT radius;
MoveToEx(hDC, clockCenter.x, clockCenter.y, NULL);
radius = (INT)(((LONG)clockRadius * scale) / 200);
SetROP2(hDC, patMode);
SelectObject(hDC, hPen);
LineTo(hDC, clockCenter.x + (INT)(((LONG)(CirTab[pos].sin) * (radius)) / CLKSCALE),
clockCenter.y + (INT)(((LONG)(CirTab[pos].cos) * (radius)) / CLKSCALE));
}
Array is..
STRIG CirTab[] = { // circle sin, cos, table
{ 0, -7999 },
{ 836, -7956 },
{ 1663, -7825 },
{ 2472, -7608 },
{ 3253, -7308 },
{ 3999, -6928 },
{ 4702, -6472 },
{ 5353, -5945 },
{ 5945, -5353 },
{ 6472, -4702 },
{ 6928, -4000 },
{ 7308, -3253 },
{ 7608, -2472 },
{ 7825, -1663 },
{ 7956, -836 },
{ 8000, 0 },
{ 7956, 836 },
{ 7825, 1663 },
{ 7608, 2472 },
{ 7308, 3253 },
{ 6928, 4000 },
{ 6472, 4702 },
{ 5945, 5353 },
{ 5353, 5945 },
{ 4702, 6472 },
{ 3999, 6928 },
{ 3253, 7308 },
{ 2472, 7608 },
{ 1663, 7825 },
{ 836, 7956 },
{ 0, 7999 },
{ -836, 7956 },
{ -1663, 7825 },
{ -2472, 7608 },
{ -3253, 7308 },
{ -4000, 6928 },
{ -4702, 6472 },
{ -5353, 5945 },
{ -5945, 5353 },
{ -6472, 4702 },
{ -6928, 3999 },
{ -7308, 3253 },
{ -7608, 2472 },
{ -7825, 1663 },
{ -7956, 836 },
{ -7999, -0 },
{ -7956, -836 },
{ -7825, -1663 },
{ -7608, -2472 },
{ -7308, -3253 },
{ -6928, -4000 },
{ -6472, -4702 },
{ -5945, -5353 },
{ -5353, -5945 },
{ -4702, -6472 },
{ -3999, -6928 },
{ -3253, -7308 },
{ -2472, -7608 },
{ -1663, -7825 },
{ -836 , -7956 }
};
Anu
|
|
|
|
|
Anu_Bala wrote: No, pos shows only between 1 and 60 only.
Array index starts from zero. Your pos is zero based index?
NB: While posting code, embed them in code block for better readability.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Initially i declared pos =0;
One question regarding forum:
In last answer u get one line from my post and asked question for that(grey line ).How u get that??
Anu
|
|
|
|
|
Anu_Bala wrote: Initially i declared pos =0;
Initially its working also. Did you checked whether the index go beyond 59 when you get bogus values?
Anu_Bala wrote: One question regarding forum:
In last answer u get one line from my post and asked question for that(grey line ).How u get that??
While writing reply, The previous message will be displayed above in blue color. Select the lines you want to quote and click "Quote Selected Text" button.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Jijo raj wrote: Initially its working also. Did you checked whether the index go beyond 59 when you get bogus values?
No the index showing values between 0 and 59 only. Only the array value is getting changed.
Im just confused .How it happens like this.
If i didnot invoke second timer(dialog class),the clock shows the correct needle position.No problem occurs.
But when i invoked this dialog timer ,after 55 seconds invoked of second timer..The needle get distorted.When i debug,i found that array values is getchanged.
In second timer(dialog class) i code like this
void CReplay::OnTimer(UINT nIDEvent)
{
CListCtrl *pCtrl = (CListCtrl*)GetDlgItem(IDC_REPLAYLIST);
char ListBoxStr[50];
CString now;
CTime time;
static int j=1;
int index = 0;
pCtrl->DeleteAllItems();
for(int i=0;i<nosize;i++)
{
sprintf(ListBoxStr,"%d",i+1);
pCtrl->InsertItem(i,(CString)ListBoxStr);
sprintf(ListBoxStr,"%s",rptime[i]);
pCtrl->SetItemText(i,1,(CString)ListBoxStr);
}
pCtrl->SendMessage(WM_VSCROLL,MAKELPARAM(SB_BOTTOM,0),NULL);
CDialog::OnTimer(nIDEvent);
}
Anu
|
|
|
|
|
Anu_Bala wrote: When i debug,i found that array values is getchanged.
Make your array const. Then probably during compilation itself you can find the part which modifies the array.
const STRIG CirTab[] = {
BTW, you're using this array for getting the sin and cos values. right? why can't you get it by calling sin() and cos() . Does that cause a huge performance overhead?
Well, whats the signature of STRIG struct? Is member datatypes are sufficient to hold the values? If they are not enough, you'll get bogus values.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Jijo raj wrote: whats the signature of STRIG struct? Is member datatypes are sufficient to hold the values?
typedef struct
{
SHORT sin;
SHORT cos;
} STRIG;
This is my structure definition
Anu
|
|
|
|
|
Short is enough to hold you're values. Did you change that array to const ? So that the values cannot be modified. Just try.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Yes I got it...
I put const for array.
its working..
Thank you so much.
Thanks
Anu
|
|
|
|
|
Anu_Bala wrote: its working..
Wow!!! Its party time.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
You are welcome. Thnks.
Anu
|
|
|
|
|
While it likely has nothing to do with your problem, your code needs a few changes:
CString ListBoxStr;
for(int i = 0; i < nosize; i++)
{
ListBoxStr.Format("%d", i+1);
int n = pCtrl->InsertItem(i, ListBoxStr);
ListBoxStr.Format("%s", rptime[i]);
pCtrl->SetItemText(n, 1, ListBoxStr);
}
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I am using vc++ dialog based application.I have two dialogs.in the second dialog i have an editbox to give a camera ip.what i want is when i give the ip in the edit box in second dialog,the vlc control in first dialog should play it..any code..
|
|
|
|
|
EN_SETFOCUSor EN_CHANGE are not helpful?
|
|
|
|
|
Is there any way to achieve the following syntax:
typedef int nothrow;
class my_class {
public:
template<typename T> void *search(int what);
};
template<typename T> void *my_class::search(int what) {throw "error";}
template<> void *my_class::search<nothrow>(int what) {return 0;}
int main() {
my_class c;
c.search<nothrow>(42);
c.search(42);
}
MSVC8 "could not deduce the template argument for 'T'". I tried changing the declaration to template<typename T = void> void *search(int what); but unfortunately "default template arguments are only allowed on class templates."
Thanks for your time.
|
|
|
|
|
|