|
I used "r" param but with this I can not check if the file is opening or not.
When the file is opened by orther app as window media, I want to check this and let user know the error message, but when i close window media then the file is deleted. How way to don't let app delete automatic when use fopen function?
The follow code i tried:
FILE * file = fopen(m_szFileName, "r");
if (NULL != file)
{
if(remove(m_szFileName)){
strcpy(m_szErrorMessage, "SetRecordFileName(): File access error! Please check and try again!");
return (false);
}
}
FILE* file = fopen(m_szFileName, "w");
if (NULL == file)
{
strcpy(m_szErrorMessage, "SetRecordFileName(): File access error! Please check and try again!");
return (false);
}
|
|
|
|
|
OK, then I got your problem.
You might consider to use the Win32-function CreateFile instead. And set share mode for exclusive access, like this:
CreateFile("TheFile"
GENERIC_READ, // access (read-write) mode
0, // share mode (exclusive access)
NULL, // pointer to security attributes
OPEN_EXISTING, // how to create
FILE_ATTRIBUTE_NORMAL, // file attributes
NULL // handle to file with attributes to copy
);
Then you should get an error if the file is opened by someone else, since th file cannot be opened for exclusive access.
|
|
|
|
|
I used at below but it still delete the file after show the error message and close the Window media, this seem to the same above problem:
Can you help again?
--------------------
HANDLE hFile =CreateFile(m_szFileName,GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if(INVALID_HANDLE_VALUE == hFile){
strcpy(m_szErrorMessage, "SetRecordFileName(): File access error! Please check and try again!");
return (false);
}else{
CloseHandle(hFile);
}
|
|
|
|
|
The file is opened for reading (only), this CreateFile call can never delete the file as long as you use GENERIC_READ.
But I do suggest you to:
1.
Use OPEN_EXISTING instead of OPEN_ALWAYS. (The file already exists, doesn't it?)
2.
Use share mode 0 for exclusive access.
|
|
|
|
|
If I used OPEN_EXISTING and share mode 0, but I can not create a new file if the file have not existed,
My function is record a file avi,
if the file have not existed then create new one,
if the file existed and have not opened by orther app then over write this,
if the file existed and opened by orther app then give the user error is can not access and do nothing.
Any help again?
Thanks again!
|
|
|
|
|
That's a different story!
I suggetst you to do like this:
Open the file for reading, exclusive access. Then you will know two things:
A.
The file exists.
B.
The file is not opened by some other application.
Close the file, if it's open.
If you get an error, then examine the error. If you get ERROR_ACCESS_VIOLATION (?) then the file exists but is opened by some other application. Show user error and terminate the function.
If you get an error meaning that the file doesn't exist, then create a new file. (CreateFile, GENERIC_WRITE, maybe exclusive access).
I think that should do it.
|
|
|
|
|
Hi,
HANDLE hFile =CreateFile(m_szFileName,GENERIC_READ, // access (read-write) mode
0, // share mode (exclusive access)
NULL, // pointer to security attributes
OPEN_EXISTING, // how to create
FILE_ATTRIBUTE_NORMAL, // file attributes
NULL // handle to file with attributes to copy
);
I can not get the case as above(A and B), the hFile HANDLE always is 0xffffff when the file not existed and the file opened by orther function (always is INVALID_HANDLE_VALUE for tow case),
the constant ERROR_ACCESS_VIOLATION had not defined.
How way to recognize what the error happends with CreatFile function?
Any help again?
|
|
|
|
|
|
Hi,
I still have problem with deleting file.
I did as below:
HANDLE hFile =CreateFile(m_szFileName,GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
DWORD lerr =0;
lerr=GetLastError();
if(INVALID_HANDLE_VALUE == hFile){
if(lerr==ERROR_ACCESS_DENIED){
fclose(logFile);
strcpy(m_szErrorMessage, "SetRecordFileName(): File access error! Please check and try again!");
return (false);
}
}else{
}
This show the error when the file opened by orther appp but it still be deleted when the app close.
Any help again??
Many thank!
|
|
|
|
|
Hi,
I resolved my problem,
Many thank for help.
|
|
|
|
|
Any clues to implement a list item as a hyperlinked text using MFC?
On clicking the hyperlinked list item, some other action should take place.
Any clues Please.
Thanks
Raji
|
|
|
|
|
RajiRaghu wrote: Any clues to implement a list item as a hyperlinked text using MFC?
You can OwnerDraw the list box to make it's items to behave like a hyperlink. When the mouse is over the item set the forecolor to blue and underline the text. When out restore previous state. Changing mouse cursor also looks good.
There are selection change event handlers that can do the click part.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
Its not for your problem but maybe it is some helpful to you Here[^]
whitesky
|
|
|
|
|
Hai to all
whenever i make a new project(MFC(exe)) in vc++ and execute it then it
gave to message box "could not execute:invalid directory(win32,error 267)
and then could not execute the program.
please any one tell me why not my program is execute.
Thanking you
mailing me
Yogi
|
|
|
|
|
Check the directory settings from the Menu Tools>Options [Directories tab]
If it is incorrect put the correct value
|
|
|
|
|
Is there any code in vc++ to shut down the local host system and remote machine.One of my friend told there is code in VB to shutdown the system.Is there in MFC?
|
|
|
|
|
ExitWindowsEx()
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Actually there no intrinsic function in VB6 for shutdowning the System. It uses Shell TypeLibraries to utilise the Shell features. In MFC I dont' know where there is such a fesiloty available now. But you can shutdown the local system using the function ExitWindowsEx( UINT, DWORD )
The first parameter Indicate action of Exit it should be EWX_SHUTDOWN for shutdowing the system
The second parameter is the type of Shutdown it could be either EWX_FORCE of EWX_FORCEIFHANG
|
|
|
|
|
|
|
How can i resize the dialog box controls when i resize the dialog box??
|
|
|
|
|
sruti_p wrote: How can i resize the dialog box controls when i resize the dialog box??
Well you've got to design a layout manager. Just like the ones you find in Java.
The best place to trigger a layout is WM_SIZE .
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
But how can i do this? is there any function for this??
Thanks for reply.
|
|
|
|
|
sruti_p wrote: But how can i do this? is there any function for this??
It should be easy to find one. Hey CP has one for sure I think I saw one.
Of course WhiteSky has mentioned two. But they work on a single control. But the above mentioned technique can take a bunch of controls and resize them as your specify.
I think I saw one or two or three... of those layout managers in Code Project. Please check.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
Thanks for ur reply.
|
|
|
|