WinCheck 3.0 DDE Tech Notes Version 3.0h 10/24/91 © 1991 Wilson WindowWare, Inc This document is separated into three sections: DDE Commands to Request WinCheck Information DDE Commands to Enter or Change WinCheck information The WinCheck DDE SDK DDE Commands to Request WinCheck Information ============================================ These commands are sent to WinCheck with the DDE Request convention. GETEARLIESTUNCLEARED Description: GETEARLIESTUNCLEARED will place the following ASCII string into your return area: M:mm,Y:yy GETREG GETREGLITE Description: GETREG and GETREGLITE will get the information from a WinCheck Register, and place it into a tabbed ASCII file. GETREG returns all information about each transaction (payee, amount, category/split information, memo information, address, and tax/cleared status). GETREGLITE does not return category information, memo lines, or addresses. GETREGLITE is substantially faster than GETREG. Certain filters can also be applied: M=mm Specify Month. Y=yy Specify Year F=All Show all (no filter, default) F=Cleared Show Cleared F=Uncleared Show Uncleared F=Credit Show Credit F=Debit Show Debit Example Usage's in Word for Windows: To get the entire register for the current month in WinCheck, Account TUT: {dde WinCheck TUT GetReg} To get the May 91 Register without memos or categories: {dde WinCheck TUT GetRegLite,m=05,y=91} To get the May 91 Register, cleared transactions only: {dde WinCheck TUT GetReg,m=05,y=91,f=cleared} To get the May 91 Register, cleared debits only: {dde WinCheck TUT GetReg,m=05,y=91,f=cleared,f=debit} Format of Output The output from GETREG will be a tabbed ASCII file. Each tab represents a column. Each transaction will have 16 columns. If the transaction is split amongst categories, then each split will be displayed on subsequent lines. GETREGLITE does not use columns 8-16. Column Description Example 1 Account ID TUT 2 Unique Record 12 Number for that month 3 Transaction Type 300 (see Table at end) 4 Date 03/10/91 5 Check # (if any). 203 Blank if not a check 6 Payee/Description Safeway 7 Transaction amount. -67.73 Debits will have a negative sign. 8 Category/Subcategory. Personal:Food SPLIT if split. 9 Tax significant. T A "T" indicates tax significance, a blank indicates otherwise. 10 Transaction Cleared status C A "C" indicates the transaction is cleared, a blank indicates otherwise. 11 "To" line in Address Seafirst Bank Co 12 Address 123 Main Street 13 City, State Seattle, WA 14 Zip code 98000 15 Memo 1 Groceries 16 Memo 2 Party food The subsequent lines for a split transaction have the following format: Column Description Example 1 Split Number. Always in #1 numerical order with a pound sign. 2 Split amount -23.43 3 Category/Subcategory Personal:Hobbies Example Output TUT0 100 03/04/91 Checking Deposit 2783.93 Royalty T C TUT1 300 03/05/91 3336 George Kilroy -9.50 Personal:Newspaper T TUT2 300 03/05/91 3337 Seattle City Light -187.45 Utilities T C TUT3 300 03/05/91 3338 U.S. West -65.47 SPLIT T #1 -35.34 Utilities:Home Phone #2 -30.13 Utilities:Celluar Phone TUT4 300 03/05/91 3339 Cellular One -114.68 Utilities T GETCATEGORIES GETCATEGORIESSORTED Description: GETCATEGORIES and GETCATEGORIESSORTED will get the list of categories and subcategories from WinCheck, and place it into an ASCII file. GETCATEGORIES is significantly faster than GETCATEGORIESSORTED. Example Usage in WinWord {dde WinCheck TUT GetCategories} {dde WinCheck TUT GetCategoriesSorted} Format of Output There is one category per line. Example Output (sorted) Band Income Car Pymt Computer Credit Cards Credit Cards:Gas Garden Svc Model Fees Mortgage Personal Personal:Food Personal:Hobbies Personal:Magazines Personal:Newspaper Royalty Utilities Utilities:Celluar Phone Utilities:Home Phone GETCURDATE Description: GETCURDATE will return the current date. GETCHECKING GETSAVINGS GETBNKCHECKING GETBNKSAVINGS Description: These four commands will return the current balance for checking and savings accounts, for either Your balance or the Bank's balance. GETCOMMON Description: GETCOMMON will get a list of the common transactions defined in WinCheck. Certain filters can also be applied: R=All Show all Dates Common (default) R=ll-hh Show Commons between ll and hh days F=All Show both cleared and uncleared F=Cleared Show Cleared F=Uncleared Show Uncleared Example Fields in Word for Windows ================================== To get all of the Common Transactions: {dde WinCheck TUT GetCommon} To get all of the Common Transactions that are debits: {dde WinCheck TUT GetCommon,f=debit} To get all of the Common Transactions that happen from the 1st to the 15th of the month: {dde WinCheck TUT GetCommon,r=1-15} Gets all Common Transactions that happen from the 1st to the 15th of the month, and credit the account: {dde WinCheck TUT GetCommon,r=1-15,f=credit} Format of Output There is one common transaction per line. Each tab represents a column. There are four columns: Column Description Example 1 Transaction Properties MP,R 2 Day of month 04 3 Payee Seattle City Light 4 Amount -9.50 Example Output A 03 Checking Deposit +2783.93 MP 04 George Kilroy -9.50 M 08 Seattle City Light -0.00 M 08 U.S. West Communications -0.00 M 08 Cellular One -0.00 MPP,R 08 Wells Fargo Mortgage Co -2245.85 M 08 Smith Lawn and Garden Care -145.56 M 11 Checking Deposit +3100.00 DDE Commands to Enter or Change WinCheck Information ==================================================== These commands are sent to WinCheck with the DDE Execute convention. If the last two characters ar NR (i.e. WRITECHECKNR), this will supress a register recalc. If you are going to add a bunch of transactions at the same time, use the NR command, and then use the RECALC command... this will increase speed dramatically. WRITECHECK WRITECHECKNR Description: WRITECHECK will enter a check into WinCheck's register. There are a number or parameters that can be filled in: Syntax Description Example D=mm/dd/yy Specify Date D=03/09/91 T=dddd.cc Specify Amt T=45.84 C=X Specify Cleared C=Y N=### Specify check number N=2342 P="ppppppp" Specify Payee P="Seattle City Light" M="mmmmm" Specify Memo1 M="Groceries" M2="mmmmm" Specify Memo2 M2="Party Food" L="ccccc:ssss" Specify Category L="Personal:Groceries" $T=n*ddd.cc Specify Split #n amount $T=1*34.56 (max 32) $L=n*"ddd.cc" Specify Split #n category $L=1*"Utilities:Home Phone" (max 32) TO="ttt" "To" part of Address TO="Seattle City Light" ADDR="sss" Street Address ADDR="123 Main Street" CITY="ccc" City CITY="Seattle" STATE=ss State STATE=WA ZIP=zzzz Zip ZIP=98004 PRINT Prints this check PRINT Examples To make WinCheck write a check for 580.00 to Shorewood Apartments, category Rent, using the current date, and the current check #: [WriteCheck:p="Shorewood Apartments",t=580.00,l="Rent"] To make WinCheck write a check for 580.00 to Shorewood Apartments, category Rent, using the current date, and current check #, and print it: [WriteCheck:p="Shorewood Apartments",t=580.00,l=Rent,print] To make WinCheck write a check to US West for 65.47, split two ways, 35.34 for Home Phone, and 30.13 for the cellular phone (the line breaks are for cosmetic reasons only): [WriteCheck:p="US West",T=65.47, $T=1*35.34,$L=1*"Utilities:Home Phone", $T=2*30.13,$L=2*"Utilities:Cellular Phone"] CDEPOSIT SDEPOSIT CDEPOSITNR SDEPOSITNR Description: CDEPOSIT and SDEPOSIT are used the same way as WRITECHECK. CDEPOSIT will make a checking deposit, and SDEPOSIT will make a savings deposit. Examples To make WinCheck make a deposit for 1000, split across "Band Income" and "Payroll", on May 15, 1991: [CDeposit:t=1000.00, $T=1*450.00,$L=1*"Band Income", $T=2*550.00,$L=2*"Payroll",D=05/15/91] CMISC SMISC CMISCNR SMISCNR Description: CMISC and SMISC allow you to make up your own transaction. Use the same parameters as WRITECHECK, but add the following: Syntax Description Example DESC="ddd" Specify Description DESC="Service Fees" T=dddd.cc Specify Amt T=45.84 CR Specify this transaction CR credits your account Examples To make WinCheck enter Service Fees for 6.50 on June 12, 1991. [CMisc:t=6.50,Desc="Service Fees",D=06/12/91] ADD ADDNR Description: ADD and ADDNR allow you to make up your own transaction. Use the same parameters as CMISC, but add the following: Syntax Description Example Y=n Specify Type (from Table Y=303 at end of this doc, T=dddd.cc Specify Amt T=45.84 R=y|n Specify Credit R=Y Examples To make WinCheck enter 10.00 of interest to Savings on June 12, 1991. [ADD:t=10.00,Desc="Savings Interest",D=06/12/91,Y=303,R=Y] MODIFY MODIFYNR Description: MODIFY and MODIFYNR can be used to change certain properties about a transaction. These properties are: Transaction Amount Cleared/Uncleared Status Payee Check Number MODIFYNR will not cause a screen refresh or recalc afterwards. This is helpful if you are modifying a large group of transactions at once because the refresh is a slow process. You should use the RECALC command (explained elsewhere in this text). In order to modify a transaction, you must have the month, year, and the unique record number of the transaction. The GETREG or GETREGLITE functions can give you this information. When modifying a transaction, specify the date and the record number with the following parameters: Syntax Description Example D=mm/dd/yy Specify Description D=03/12/91 R=nn Specify number R=7 Example Consider the following output from GETREGLITE: TUT0 100 03/04/91 Checking Deposit 2783.93 C TUT1 300 03/05/91 3336 George Kilroy -9.50 TUT2 300 03/05/91 3337 Seattle City Light -187.45 TUT3 300 03/05/91 3338 U.S. West -65.47 TUT4 300 03/05/91 3339 Cellular One -114.68 TUT5 300 03/05/91 3340 Wells Fargo Co -2245.85 If we want to clear the check to Seattle City Light (Unique Number 2), we would use the following command (notice how only the month and year need to be correct): [Modify:d=03/01/91,r=2,C=Y] Important: If you change the amount of a transaction which is split, the category will be set back to "Personal". RECALC Description: RECALC will cause a screen refresh and recalculation of WinCheck's data from a specified date. Example This command will recalc/refresh all data that is greater than or equal to March 1, 1991: [Recalc:D=03/01/91] REGISTERADDON Description: A third party add-on tool can add itself to WinCheck's Menu by using the REGISTERADDON command. The following parameters are used: Syntax Description Example E="eee" Executable Name E="PAYROLL.EXE" D="ddd" Menu Descriptor D="Payroll Deposit..." S="sss" Status Line Text S="Make a Payroll Deposit" C="ccc" Caption of your app C="Payroll Deposit" Example To register the Payroll Deposit Application that is supplied with WinCheck, Payroll issues the following command: [REGISTERADDON:E="PAYROLL.EXE",D="Payroll Deposit...", S="Make a Payroll Desposit",C="Payrol Deposit"] Please see the section on the DDE SDK for the guidelines for WinCheck add-on tools. The WinCheck DDE SDK ==================== This section is divided into 7 different chapters: What is an Add-On Tool? What is Registering? Command line parameters WWWDDEC.DLL Using Visual Basic to write your tool Using the Windows SDK to write your tool Distributing your tool to the masses What is an Add-On Tool? ======================= WinCheck Add-On tools are separate programs that use DDE to manipulate or examine WinCheck data. WinCheck can add these programs to its menu to shield the End User of the fact that they are really running a separate program. The End User will think that your add-on tool is just a built-in part of WinCheck. What is Registering? ==================== Registering an app with WinCheck informs WinCheck of what to put on its menu, status line, and where the Add-On tool exists on the End User's machine. When an End User first receives your tool, they will need to add it with the "Add..." menu choice in WinCheck's "Tools" menu. When they do this, WinCheck will execute your add-on tool, with the /R:xxx switch (see next chapter). Your application then must use the REGISTERADDON execute command to acknowledge WinCheck's attempt to add on the tool. Once your application has registered itself, there is no need to register itself again. Command line parameters ======================= There are three types of interaction WinCheck has with your tool, two involve executing it: 1. The End User adds it with the "Add..." menu option. WinCheck will then run your application with the /R:xxx command line switch. "xxx" is the current account ID, which is used for the topic in DDE conversations. For Example: PAYROLL.EXE /R:TUT Your application should respond to this switch with the REGISTERADDON command. 2. The End User selects your tool from the Menu, and your tool is not already running. WinCheck will then run your application with the /L:xxx command line switch. "xxx" is the current account ID, which is used for the topic in DDE conversations. For Example: PAYROLL.EXE /R:TUT Your application need not respond to this switch, it merely should use TUT (in this example) for the Topic. 3. The End User selects your tools from the Menu, and it is already running. WinCheck will then bring your tool to the Top (WinSDK call ShowWindow (hWndApp, SW_SHOW)). WWWDDEC.DLL WWWDDEC.DLL is a DLL included with WinCheck. It allows an application to become a DDE Client without having to write any DDE code. The exported function from this DLL is: WORD FAR PASCAL WWWDDERun ( szCommand, iAction, szReturn, hWnd ) szCommand LPSTR. Points to the DDE comand string. iAction int. Has one of three values: 0: Parse command only (for debugging) 1: Run the command only 2: Parse and Run the command (for debugging) szReturn LPSTR. Points to an application supplied buffer for DDE_REQUEST return data. hWnd HWND. Handle to a top-level window of your application. The Command Syntax is: = Can be one of the folowing values: e Execute r Request p Poke Application Name Application Topic Text of command For example, to do a GetReg from WinCheck, you could call WWWDDERun as in the following example: WWWDDERun ("=r WinCheck TUT GetReg", 1, szReturnData, hWndParent ); This will return the register in the szReturnData memory block. To register Payroll with WinCheck, it does this: WWWDDERun ( "=e WinCheck TUT [RegisterAddOn:" "e=\"Payroll.exe\"," "d=\"Payroll...\"," "s=\"Make a Payroll Deposit\"," "c=\"Payroll Deposit\"]", 1, NULL, hWndParent ); Using Visual Basic to write your tool ===================================== The source code to the Payroll program written in Visual Basic can be found on your WinCheck distribution disk. Visual Basic has its own DDE commands, so WWWDDERun is not used. Using the Windows SDK to write your tool ======================================== The source code to the Payroll program written in the Windows SDK and Microsoft C can be found on your WinCheck distribution disk. It makes use of the WWWDDERun command. Distributing your tool to the masses ==================================== Once you have written your tool, there are a number of possibilities: You can keep it to yourself You can sell it as shareware/retail (like WinCheck) You can upload it to our Forum on Compuserve for everyone to share You can send it to Wilson WindowWare. If it is really cool, we will put it in the next release of WinCheck and give you credit for writing it. Table of Transaction Types: --------------------------- Checking Deposit 100 Endstub Check 200 Normal Check 300 Checking ATM 301 Checking MISC 302 Checking Interest 303 Checking Credit/Debit 304 Savings Deposit 320 Savings Withdrawal 321 Savings ATM 322 Savings Misc 323 Savings INterest 324 Savings Credit/Debit 325