Hej Helena! Eller om någon annan vill gnugga geniknölarna och förklara för mej var jag tänker fel. Som ni ser i koden nedan så gör metoden Test_OpenClose AdkOpen - Med felkontroll sedan gör den AdkClose. Se nedan test Lägg in den i en Console application och förklara varför den kastar felet: "Föreningen måste vara skapat med Visma Förening." Förutsätter: 1 - att du har både Visma Förening & Visma Administration installerade på datorn. 2 - att du har Demobolagen kvar. using Microsoft.Win32; using System; using System.IO; using API = AdkNet4Wrapper.Api; namespace VismaTest { class Program { static void Main(string[] args) { using (Visma visma = new Visma()) { visma.Test_OpenClose("SpcsFor.exe", "Idrfor"); } using (Visma visma = new Visma()) { visma.Test_OpenClose("SpcsAdm.exe", "Ovnbol1000"); } } } public class Visma : IDisposable { const string sAppPaths = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"; private RegistryKey AppPathsKey { get { return Registry.LocalMachine.OpenSubKey(sAppPaths, false); } } private RegistryKey VismaERPKey(string _application) { return AppPathsKey.OpenSubKey(_application, false); } private string CommonFilesPath(string _application) { return VismaERPKey(_application).GetValue("CommonFiles") as String; } private string DefaultCompanyPath(string _application) { return VismaERPKey(_application).GetValue("DefaultCompanyPath") as String; } private string AdkDLLPath(string _application) { return VismaERPKey(_application).GetValue("AdkDll") as String; } private API.ADKERROR CheckADKError(API.ADKERROR _error) { if (_error.lRc != API.ADKE_OK) { String errortext = new String(' ', 200); int errtype = (int)API.ADK_ERROR_TEXT_TYPE.elRc; API.AdkGetErrorText(ref _error, errtype, ref errortext, 200); throw new Exception(errortext); } return _error; } public void Test_OpenClose(string _application, string _company) { string localAdkDLLPath = AdkDLLPath(_application); string localCommonFilesPath = CommonFilesPath(_application); string localCompanyPath = DefaultCompanyPath(_application) + _company; Directory.SetCurrentDirectory(localAdkDLLPath); CheckADKError(API.AdkOpen(ref localCommonFilesPath, ref localCompanyPath)); API.AdkClose(); } public void Dispose() { // throw new NotImplementedException(); } } }
... Visa mer