Markdown Monster 1.12 has been released
Jun. 26, 2018
West Wind Technologies has released Markdown Monster 1.12 of its popular Markdown Editor, Viewer and Weblog Publishing tool. Markdown is an easy to...
West Wind Html Help Builder 6.09 is here
Jun. 20, 2018
West Wind Technologies has released Help Builder 5.09. Help Builder is a tool for building online and offline documentation with easy tools based on...
West Wind Web Connection 6.21 is out
Jun. 18, 2018
West Wind Technologies has released Web Connection 6.21 of its Web Development tool set for Visual FoxPro. Web Connection is a rich tool for...
Markdown Monster 1.11 released
May. 18, 2018
West Wind Technologies has released Markdown Monster 1.11 of its popular Markdown Editor, Viewer and Weblog Publishing tool. Markdown is an easy to...
Sorry I forgot to mention that I'm running a VFP compiled exe with createprocess()
I can get start a process using createprocess() but the lhProcess number is different to the PID listed in the TaskManager.
So when I use OpenProcess(PROCESS_QUERY_INFORMATION+PROCESS_VM_READ,0,lhProcess) it fails to open the handle.
Is there a way to get the correct pid back or is enumerating all the processes the only way to go?
I used in my various VFP applications directly Windows AJAX withl_oHttp = CREATEOBJECT("MSXML2.ServerXMLHTTP") ...and was biten with TLS 1.2 issue on various client PCs.
At the end, I created small EXE with Golang which only connects to server and returns result. Then I called this EXE instead of MSXML2.ServerXMLHTTP with l_oShell = CREATEOBJECT("Wscript.Shell") ...
Yes, it looks silly to call another EXE for every HTTP request, but this was only secure way to do it on older Windows.
Do you know if you have to put all the interfaces contained in a active-x dll into the manifest or just the ones you want to call?
I'm trying to figure out how to use wwJsonServiceClient to generate an OAUTH 2.0 signature.
Their API docs have an example:The signature is sent in a header named BDXAPI_NAME.
Did you ever find a resolve for this? We are migrating our website over to a new Windows 2012 Server and are not able to get the foxpro dlls to work even when we have registered them successfully?
<script lang="vfp">oProxy = CREATEOBJECT("wwJsonServiceClient")
*** Create custom Http Object for AuthenticationloHttp = CREATEOBJECT("wwHttp")loHttp.cUsername = "ricks"loHttp.cPassword = "seekrit22"loHttp.AddHeader("user_token","3241231")
*** Pass it to the proxy to useloProxy.CreatewwHttp(loHttp)
loArtist = loProxy.CallService("http://albumviewerswf.west-wind.com/api/artist",loArtist,"PUT")
IF loProxy.lError ? loProxy.cErrorMsg RETURNENDIF
The .T. parameter makes a permanent redirect.
lnUnixEpochTime = 1500847437204? lnUnixEpochTime/(60*60*60*60*60*60) + DATETIME()
This returns: 07/23/2017 05:16:29 PM
Also, using state persistence the way you describe applied more to single server applications (logical servers such as COM objects)
This can happen when the main FoxPro window is minimized.
Visual FoxPro is great for building desktop applications.It is a object-oriented programming to reuse components across applications.Visual FoxPro originated as a member of the class of languages commonly referred to as "xBase" languages,Visual FoxPro is a great tool for building database solutions of all sizes.
There now exists a command-line tool to unblock these downloaded files. PowerShell has the Unblock-File commandlet.
TextMate syntax supports better autocomplete, but the language file has to be built up to support this. The source code for the plug-in is available so you can contribute to make it better yourself instead of crying about it. Guaranteed nobody at Microsoft is going to do it for us...
Come on Microsoft you could do it better for your own product! Notepad++ is doing that highlighting for years (not surprising after the failure they made announcement "VS on Mac" has turned to be another big disappointment with their ridicilous license aggrement).
The Long path tool is the very best program for error, unlock solution. Try it and solved your problem. I used the long path tool and I solved my error, unlocks problem solution.
I have now added Dispose() method into my base business object class, and my objects can now be cleanly and fully released from memory.
40 BOs were taking 7-8 seconds to new up when the form launched while running in an EXE, but only 1-2 seconds when running the same code from within the VFP IDE.
I blogged about my discovery, research, and remedy. Link below. In the post I also give props to Rick for blogging about this a decade ago.
2) Memo fields are just text and it just works. Nothing special about memo fields. Binary data is converted base64 and sent.
Nice addition in west wind client tools. I have following questions.
1) In VFp, table structure can be passed with cursortoXml. Is it possible with Json services?
2) How memo field data is passed with Json services ?
Attempted to modify wc6/classes/wwAPI > EncodeDBF() to support files larger than 16Meg, couldn't work it out, any idea why?
Can't find 'oPostStream' and 'cPostStreamClass' in WC6's wwHTTP.Did you implement these properties somewhere else?
You are spot on that this is par for the course and almost second nature when coding in .NET so it's frustrating that it is a little awkward in VFP.
I have an exe that was built just over a week ago (20/10/2015) while we were still in DST, it was built at 11:24 AM Local time which would have been 10:24 UTC. I'm ignoring the date-part for brevity because that's not changing due to the UK being so close to UTC and the file being built near midday. Up until Sunday morning VFP reported the time of the file correctly as 11:24 and you could confirm this by looking at the file in Windows Explorer. Since the clocks went back VFP now reports the file's (local) time as 10:24 so any comparisons might assume that the file was changed. Windows Explorer is still showing the time correctly as 11:24 but FDATE() and ADIR() in VFP cannot give me the correct local time now that it's running in the different TimeZone.
This is particular annoying for a routine I wrote which monitors changes in JPEGs. Once of the metrics which it stores to detect if the files have changed is the date modified - obtained via ADIR(). When the routine ran before Sunday it recorded all the Date modifies of all the pertinent files and that was fine but since the clocks changed the routine has scanned the (unchanged) files and the datetimes appear to have all changed when they haven't in reality, it's just VFPs (in)ability to read the correct datetime for files created in a different timezone which is causing a problem. My routine therefore assumed that all the JPEGs had changed since the previous time it scanned them and performed a task it thought was necessary when in fact it wasn't. It'll only hit this problem once every six months because it then records the new datetimes but it's not good for this routine to have this problem at all, let alone a reoccurring one.
The solution, as you say, is to store those datetimes using the UTC standard and potentially have a general rule that any datetime used for comparison purposes be stored in UTC. I'm working in a 16+ year-old application, so it's difficult to retrofit storing ALL datetimes in UTC across the whole system but for new facilities it should be possible.
One thing I thought was interesting in your implementation is that you cache the TimeZone offset for speed so you only need to query it once, does that make the implementation require a restart or a specific clearing of the cache when the computer system transitions between DST and non-DST? On my computer that function would return 0 or -60 depending on the DST-ness of the system but if it caches that value and uses the cache then the function risks returning the wrong value if it was cached before the transition and then called after the transition. I've seen this before on applications that run 24/7 and use the SECONDS() function due to the "caching" VFP does to facilitate SECONDS().