|
Look, guys, I have a code that worked properly under Windows XP 32 bit.
hHookMsg = SetWindowsHookEx(WH_JOURNALPLAYBACK, hkprc, hInst, 0). But under Windows 7 64 bit this call failed and I got System Error Message "Acces denied"
I tried this:
hHookMsg = SetWindowsHookEx(WH_JOURNALPLAYBACK, hkprc, hInst, GetCurrentThreadId())
and this
hHookMsg = SetWindowsHookEx(WH_JOURNALPLAYBACK, hkprc, (HINSTANCE)NULL, GetCurrentThreadId())
and got "This hook can be set only globally".
Any ideas how to resolve the situation?
|
|
|
|
|
They have put security around that sort of thing and you probably have to be running as administrator and it's likely going to throw a UAC to user to confirm it is okay. Goto MSDN and look at the documentation.
In vino veritas
|
|
|
|
|
Sure. I do not need this option- it was intended to demonstrate how my prog works to another users. And they do no not like (and for a reason) when some soft wants administrative privileges.
|
|
|
|
|
Member 14105155 wrote: And they do no not like (and for a reason) when some soft wants administrative privileges. Well they are going to have to get used to it. Windows 10 (7 is out of support in a few days) uses this extensively in order to protect the users' systems from malicious software.
|
|
|
|
|
Well, this is the reason to write soft that works without such privileges.
|
|
|
|
|
You do not have a choice. The operating system sets the rules, and your software must work within those rules.
|
|
|
|
|
I do have. A program can ask a user if he let it run with privileges, but users dislike such soft. Therefore, the choice exists, but it is very poor one.
|
|
|
|
|
Member 14105155 wrote: Therefore, the choice exists, but it is very poor one. On the contrary it is a very good one, as it allows the user to control which programs are allowed to make significant changes to their system.
|
|
|
|
|
I use this code:
Quote: BOOL C1095C::IsFileReady(CString path)
{
HANDLE hFile = CreateFile(path.GetBuffer(), GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
else
{
CloseHandle(hFile);
return TRUE;
}
}
while (!IsFileReady(output.GetBuffer()))
{
Sleep(1);
}
which waits for a file to be created and then once it is, it
proceeds to the next job. The problem is, this code doesnt seem to
work every time. Im nervous now in using it. I need to wait for a
file to be full created and sometimes it may take 5+ minutes. Once its
created, then I want to move onto the next step. How can I adjust this
code to make it work every time? Please any response any one can give me
will be great appreciated.
|
|
|
|
|
|
Is that Linux sleep() or Windows Sleep()? Or, more to the point, are you sleeping for 1 second, or 1 millisecond? If the latter, maybe you should try to increase the time to around 100ms: The Windows file system is not very fast, and might be hamstrung by constantly trying to open nonexistant files.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
It's clearly windows no such thing as CreateFile in linux and he already stated it can take 5min to open the file (I assume of a network drive) so 100ms is not going to change anything
In vino veritas
|
|
|
|
|
In addition to Leon's suggestion, there's also FindFirstChangeNotification() .
"One man's wage rise is another man's price increase." - Harold Wilson
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
If you are waiting for the file to be fully created (i.e. completely written), then this code won't work. At best, it will wait until the file is created (i.e. when the other task opens it for writing).
The problem may be broken into two steps:
- Wait until the file is created (i.e. it appears in the directory)
- Wait until the file is closed (i.e. the writing is completed)
Others have given you good ideas about how to wait for the file to be created. In order to wait for the file to be completely written, the best way would be for the other application to create another file AFTER it is done with the data file. For example:
- Your application waits for the creation of DATA.DAT
- Other application creates file DATA.DAT (your application detects the creation)
- Other application writes into DATA.DATA (your application waits for the creation of FINISHED.DAT)
- Other application closes DATA.DAT
- Other application creates FINISHED.DAT (your application detects FINISHED.DAT, and knows that DATA.DAT is ready)
There are some other points to handle (e.g. what happens if DATA.DAT is created before your application starts waiting for it?), but this is the basic idea.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
IF you know that this will be on a local drive, an alternative is to create the file in a different directory and then move it to the target directory.
|
|
|
|
|
Subject to the limitation you mentioned, that would work, too.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
Yes, I know VS2008 is old, but I have to use it for a development project.
Anyway, a couple of weeks ago, I installed some software from Intel that broke my VS2008. Nothing would compile, I could not set breakpoints, etc. Using a clean Windows 10 VM, I re-installed VS2008, SP1 and an ATL update required for WEC7 development. I can compile and set breakpoints again. Joy. Now it gets a little weird. The step over (F10) and step into (F11) functions refuse to work. They are being treated as the go (F5) commands, making it just about impossible to get anything done. Note that even the menu debug commands behave this way.
Now it gets a little weird now - it seems to be project/solution related. If I debug project A the functions work, debug Project B (the one I really need to work on) they don't.
So a clean re-install did not fix this, a reset to all settings didn't fix it, deleting .suo, etc files didn't fix it... maddening
Thoughts? Ever run into this?
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
|
You would think, but depending on machine / project the behavior varies.
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
It's a long shot, but if the issue is project-specific, then you can try to delete the .suo file from the project directory and re-open the project.
"Five fruits and vegetables a day? What a joke!
Personally, after the third watermelon, I'm full."
|
|
|
|
|
This is a common suggestion - I've done it several times on multiple projects with no success.
The part that I don't get is that the actual menu functions don't work, implying some sort of corruption in VS2008 - *but* that makes no sense since one project will work and the other won't. It should be corrupt for both.
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
Another approach is to create a VS2008 valid project and to import all your files from the old one. Then you will have your app settings fresh new. I know, is a little work to do, but I am sure will solve your issue.
modified 10-Jan-20 5:46am.
|
|
|
|
|
Good suggestion, but I cannot even get a simple Yellow World dialog app to debug properly.
Maddening.
Thanks for the suggestions
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
Well, I may have isolated the issue a little closer - the behavior changes depending on what SDK I select - I have multiple embedded CE projects.
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
In case someone runs into this in the future - Microsoft has released an update for SP1 for VS2008 Professional that addresses the problem I was having. I really think I applied it one time before, but maybe I got things out of sequence. Anyway, it's KB2483802, link: Download Visual Studio 2008 update for Windows Embedded Compact 7 from Official Microsoft Download Center[^]
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|