Use ISAPI to implement the automatic update of web pages

zhaozj2021-02-11  149

Use ISAPI to implement the automatic update of web pages

Author: Cui strong for some webmasters, the most painful thing to do daily duplication of work. For example, from the news page to remove the old news headline, replace the new news headline; if you want the reader to see the previous news, you have to change the Formfield value that changes over time. and many more. Write a WebServer's ISAPI program with Delphi, which can greatly reduce the amount of work. ---- ISAPI mode server-side server, have the following features: Small memory overhead, multiple client links with one link memory overhead; fast. Since the DLL is running once, it is still in memory. When there is a new link, the data is transmitted directly from the memory, and the speed is effectively improved. ---- I have the following functions written in Delphi4: ---- 1, automatically modify the time value of Formfield (selected) in accordance with date changes. ---- 2, automatically generate news directories. Managers simply copy new news to this directory, the program can automatically generate the page of the news home page.

---- Heart: ---- 1, search for eligible files in a directory, return handle: Handle FindFirstFile (LPCTSTSTR LPFILENAME, LPWIN32_FIND_DATA LPFILEDATA); ---- 2, the handle returned according to FindFirstFile Continue search for next File: BOOL FINDNEXTFILE (Handle HfindFile, LPWINDICEDATA); ---- 3, close the specified search handle: BOOL FINDCLOSE (Handle HfindFile); ---- 4, Win32_Find_Data This structure stores FindfirstFile and findnextFile finds the information of the file, the following structure: typedef struct _WIN32_FIND_DATA {DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName [MAX_PATH]; TCHAR cAlternateFileName [14];} WIN32_FIND_DATA; action program content: name pathinfo enabled updata WebActionItem1 / DispNews true source code is as follows: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, HTTPApp, ShellApi, ExtCtrls; type TWebModule1 = class (TWebModule) Timer1: TTimer; procedure WebModule1updataAction (Sender: TObject Request: TwebRequest; Response: TWebResponse; Var Handled: Boolean; Procedure WebMod ule1WebActionItem1 Action (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); procedure Timer1Timer (Sender: TObject); private {Private declarations} public {Public declarations} end; var WebModule1: TWebModule1; implementation {$ R * .Dfm} // // This section is to perform a DLL without an entry.

Function: Generating the home page of the news center, // Main purpose is to drop the time dynamic change of the drop-down menu. WebModule1Updata (Sender: Tobject; Request: TWebRequest; Response: TWebResponse; var handled: boolean; var dhtml: string; var i: Integer; Begin DHTML: = ''; DHTML: = DHTML ''; DHTML: = DHTML ' News Center </ Title>'; DHTML: = DHTML '</ head>'; DHTML : = DHTML '<body>'; DHTML: = DHTML '<p> Please select Date: </ p>'; DHTML: = "POSPNEWS" '; DHTML: = DHTML '<p> <select size = "1" name = "tm">'; // The drop-down list contains the date DHTML: = DHTML '<option SELECTED value = "' formatdatetime 'MMDD', DATE) '"> Today </ option>'; DHTML: = DHTML '<ption value ="' formatdatetime ('MMDD', DATE-1) '> Yesterday </ option>'; DHTML: = DHTML '<option value = "' formatdatetime ('MMDD', DATE-2) '"> </ option>'; for i: = 1 to 7 DO DHTML: = DHTML '<option value = "' Formator (' MMDD ', DATE-2-I) '> ' Formator (' M" Month "DD" Day "', DATE-2-I) ' </ option> '; DHTML: = DHTML '</ select> <input type = "submit" value = "Submit" Name = "B1">'; DHTML: = DHTML '</ p>'; DHTML: = DHTML '</ form>'; DHTML: = DHTML '</ body>';</p> <p>DHTML: = DHTML '</ html>'; response.content: = DHTML; END; // Determines the file directory to display // according to the parameter transmitted by the request // and remove all HTM files from this directory // If there is no directory, send a message to the browser procedure TWebModule1 WebModule1WebAction Item1Action (Sender: TObject; request: TWebRequest; Response: TWebResponse; var Handled: Boolean);. var ReqDir: Tstrings; // save request parameters required var DHTML, SeleDir: string; var FileNameData: WIN32_FIND_DATA; var SearchFileHandle: THandle; begin ReqDir: = NIL; ReqDir:. = Request ContentFields; DHTML: = '<html>'; DHTML: = DHTML '<head>'; DHTML: = DHTML '< Title> News Center </ Title> '; DHTML: = DHTML ' </ head> '; DHTML: = DHTML ' <body> '; DHTML: = DHTML ' <p align = "center"> <font face = "Song "size =" 5 "color =" # 0000ff "> News Center </ font> </ p> '; // DHTML: = DHTML ReqDir.Values ​​[' TM ']; Seledir: = Reqdir. Values ​​[' TM ']; // get search handle SearchFileHandle: = FindFirstFile (Pchar (' C: / MyWeb / news / ' SeleDir ' /*.htm'),FileNameData); if SearchFileHandle <> INVALID_HANDLE_VALUE then begin DHTML: = DHTML '< P> <a href = "../ 'Seledir ' / ' filenamedata.cfilename '"> FileNamedata .cfilename '</ a> </ p>'; // Search for whose FindNextFile (SearchfileHandle, FileNameData) DO DHTML: = DHTML '<P> <a href = "/ ' Filenamedata.cfilename ' "> ' filenamedata.cfilename ' </ a> </ p> ';</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-5058.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="5058" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.057</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'yUtcZW9_2FjsnUk6LQpxUQuvaV8wG_2B_2B_2F6S50NkrZ7uAjyk7DvPz1DPVdCDsYblV32EWJi7PCl5SAMw7jgRCNgJZw_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>