I am told that there is a fax modem that operates as a printer, and that I can use that as a standard printer in Windows to accomplish printing to fax destinations. Is that true? If so, what would be the best fax modem to use?
I see that there is a fax device in Windows 7 called Microsoft Shared Fax Driver. Is it possible to print to that, purely in code, without user interaction or popups, to achieve printing to fax?
This is for an application that I work on that can generate reports directly to printer. But we are talking with a client that wants to the reports to go directly to fax. Our application is a reporting library, so there's no user interaction, although there can be configuration to set the fax number, for example. We use J2D+JPS on the Java side, and System.Drawing.Printing on the .NET side. I know that the client could implement this with third party libraries, but I want to address the possibility of simply using our existing direct-to-printer feature.
You can use the built-in Fax Service Extended COM API to send a fax programmatically, and without any user interaction.
The API allows you to check if there are any fax devices installed on the machine (via the FaxService.FaxDevices collection) and attach files to a FaxDocument via the Body property.
A caveat: the Body property is actually a string containing the path to the file that should be sent as a fax. From the documentation: the body has to be associated with an application that is installed on that computer, and the application has to support the PrintTo verb. This means that you can't fax the report directly from an in-memory object; you'd have to generate the report to some temporary printable file (an image, a PDF, or XPS) in some location, and set its' path to the Body property of the FaxDocument.
Related
I am trying to figure out what the best way to communicate between a GUI and a Windows system service is. Named pipe seems to be a good option because it has built-in access control mechanism to protect the channel. I found that VPN apps actually use named pipe for communicating between their GUI with system services, such as ExpressVPN and NordVPN.
It seems that these VPN apps don't use basic Windows APIs for creating named pipes (i.e. CreateNamedPipe) but some other libraries or APIs because the behavior of these apps is almost the same: The system service, which is installed by the app, creates a named pipe with a name in this format: (app_id)(username):SingleInstanceIPCChannel or a random GUID string (e.g. 64de4b4e-96e2-4444-8946-f96888f5f3bd)
Anyone knows which library or APIs have this behavior?
Does anyone know how to get the information about user device that access the bot deployed in S4B channel and built using MS Bot Framework (C#).
I need to know about the options to detect the user device (Device type and OS) accessing the Skype For Business Bot. If there's a way to know whether user device is desktop or mobile. In bot framework the User-Agent header formatted similar to the string below:
SFBUserAgent (Microsoft-BotFramework/3.1+https://botframework.com/ua)
(The user agent from Connector returns the following:
fxversion/4.7.2563.0 osname/windowsserver2016datacenter osversion/6.3.14393 microsoft.bot.connector.connectorclient/3.14.1.1)
I want to know if UCWA can be used to detect the device type accessing Skype For Business bot.
UCWA is not able to do so, actually no client or client-facing api can provide such information. It's because User-Agent information is not part of the presence so the client doesn't publish it to other clients. The main purpose of this User-Agent information is for monitoring reporting purpose.
However there is still some space from server side to allow us to do something. If you have access to the Skype for Business server, you have several workarounds.
Get-CsConnections.ps1 is a well-known script to pull current logged in user from Lync server side. It was written in 2011 while we only had Lync 2010, but good news is it works fine with new version of Lync like Lync Server 2013, Skype for Business server 2015. This script needs to be run in Lync/Skype management shell or a Powershell session with Lync/Skype modules imported. It needs to run by using an Lync/Skype admin account.
To retrieve user agent for a particular user by using sip uri.
$UserHomePool = (Get-CsUser -Identity [sip address]).RegistrarPool
Get-CsConnections.ps1 -SipAddress [sip address] -Pool $UserHomePool
Connections.ps1 is the prototype script of the above Get-CsConnections.ps1, it's simpler but doesn't provide advanced features. You can look at it and decide which one you need.
Do it yourself. If you don't want to use 3rd party script or just want to do it in a simplest and pure way, it's possible to do it by querying it from server database. Lync/Skype server stores this user agent information in the dynamic database in Front End server. It's in the table dbo.RegistrarEndpoint of the database rtcdyn of the instance rtclocal.
Please notice that there is no public document about the database schema so you need to do a little guess and hacking yourself. Good news is all data in the database is strored in readable format so it shouldn't be a big issue.
In a very rare chance that you are not wanting this information in real-time, the monitoring report and database can be the best approach. It's not real-time data, the data is generated within 10 mins after a conversation is ended.
If you want to get it from monitoring database, you should look at SessionDetails view for P2P conversation and ConferenceSessionDetails for conference conversation. There are straighforward fields in the views called something like UserClientType to point out the user agent information for the certain session.
At last one thing I would like to remind is Skype allows user to logged in multiple clients simultaneously, so no matter how you make it work you still need to face the question which logged in client really matters to you if the user has multiple clients logged in.
We have a heterogeneous collection of mail clients (Thunderbird, Apple Mail, Squirrelmail, Outlook etc.) on different platforms (Linux, Mac, Windows, Android) using a UW IMAP server, which supports FLAGS and PERMANENTFLAGS. Thunderbird uses them for junk control, all clients use $Forwarded, and many users use them for mail management (tagging messages with categories such as "Important", or colouring them.
We are trying to migrate to Office365. As far as I can tell, the Office365 IMAP server does not support PERMANENTFLAGS at all, but the Web interface and Outlook client do support "Categories", which from a user perspective are the same thing (they could tag their message "Important" and colour it red).
Are there any tools which would perform this migration, perhaps using MAPI or EWS on the Office365 side ?
Also, I have been getting inconsistent results migrating just the legacy IMAP flags (Answered, Flagged) which Office365 does support - often if I copy folders with IMAP the flags are visible with an IMAP client, while if I copy folders with Outlook or the Office365 batch migration tool, the flags are visible with Outlook or the Office365 web portal. Are there any reliable migration tools which will set flags properly ?
Regarding migration of standard legacy flags, I found a recipe using two passes of the open-source tool imapsync - one pass to sync mailboxes without flags, and a second pass to set the flags.
For conversion of user flags, I modified an existing tool "mixfix" I had written to repair UW MIX format mailboxes. The script adds X- mail headers for each user flag, so that a message might have X-Flag-Important: True.
In Outlook, I can write a rule to set an email category based on a message header, and so by downloading and running a ruleset on a given folder, finally migrate Thunderbird tags to Outlook categories. It must be run on a desktop Outlook client, though - the rules will not run on the server.
I have requirement of integrating CRM2011 with TAPI3.0.
I am very new to integrations. Can any one tell me how to proceed? For this we are using Ericossons TAPI Bridge.and Astra's Phone box server.
I have installed BusinessLink for windows server, Client and TAPI Bridge3.0 in my sytem. Then
what code do I need to write and where can I write this code?
My Requirement is when customers calls, CRM server should check the phone number in the contact details and if exist open the perticular contacts record.
Please reply if any one have idea/worked already.
The solution would involve creating a Windows based utility running on the Client's desktop PC.
I would create the following :-
1) You have some mechanism to either poll, or capture an event from the TAPI interface when a phone call arrives which is intercepted by your utility.
2) Based on the data in the TAPI event query MSCRM using OData or WebServices to determine the record you require. Return the GUID of the record.
3) Launch on the Client PC an IE window with querystrings of the GUID (there are examples in the SDK for launching records with querystrings).
The utility will need to run in the system tray (or as a service) on all the PCs. You will need to build an install to deploy the utility to the PCs.
Thanks
Glenn
I have app running in system tray and it sends caller ID via Windows message to chosen app. If you can receive Windows message it will work.
I'm looking to write an automated monitor script to programmatically retrieve information from another user's Exchange 2003 inbox. I have working C++ code to log into MAPI and connect to my own inbox. I can also use the Control Panel->Mail applet to configure another user's mailbox into my profile, and my code can access that way. However, this was done on my desktop with Outlook installed, which provides a richer mail profile editor.
Since this will run on a server, I'd prefer not to install Outlook at all. Instead, I can install the MAPI client. I then create a simple MAPI app that pops up the mail profile wizard using MAPILogonEx() with the MAPI_LOGON_UI flag. However, the basic MAPI client doesn't have the features to configure another user's mailbox. As a requirement, I can only run this script as the service account of the monitoring application, so I cannot tell it to run as the account whose mailbox I want.
Is it still possible to connect to another user's mailbox (assuming permissions are already granted) using the basic MAPI client? Or is it absolutely necessary to install Outlook for this functionality?
I would strongly recommend using the Microsoft Exchange MAPI Client (as you have linked). It is engineered to be far more robust than the Outlook version of these libraries. You should find the API no different between Outlook and Exchange Server with respect to Extended MAPI.
You will need to use Extended MAPI (as described by Cain T S Random) to open other mail stores, and of course your application will need to be logged in as the Windows user with appropriate permissions on the Exchange server.
I see... I'm not sure how to do that explicitly; that's usually a side effect of calling CreateStoreEntryID with the wrong flags. What's you're looking to do is probably:
Get an IID_IExchangeManageStore from your default message store
Call CreateStoreEntryID
Then open that store by the entry ID
LPEXCHANGEMANAGESTORE mapiObject = NULL;
store->QueryInterface( IID_IExchangeManageStore, (LPVOID *) &mapiObject);
mapiObject->CreateStoreEntryID( server, mailbox, OPENSTORE_TAKE_OWNERSHIP |
OPENSTORE_USE_ADMIN_PRIVILEGE, &len, &buffer);
//Call OpenEntry on the entry id
If you want a more detailed example, search the source of the MFC MAPI project for CreateStoreEntryID. If you have other questions, the best place to get them answered is the microsoft.public.win32.programmer.messaging newsgroup.
Have you looked into ConfigureMsgService? I believe that works with Exchange MAPI, or are you saying you tried that and it didn't work?