diff --git a/src/evalfunc.c b/src/evalfunc.c
index 254b2a9..a071ad8 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3355,7 +3355,7 @@
 #ifdef FEAT_SEARCHPATH
 	"file_in_path",
 #endif
-#ifdef FEAT_FILTERPIPE
+#if defined(FEAT_FILTERPIPE) && !defined(VIMDLL)
 	"filterpipe",
 #endif
 #ifdef FEAT_FIND_ID
@@ -3819,6 +3819,10 @@
 	else if (STRICMP(name, "clipboard_working") == 0)
 	    n = clip_star.available;
 #endif
+#ifdef VIMDLL
+	else if (STRICMP(name, "filterpipe") == 0)
+	    n = gui.in_use || gui.starting;
+#endif
     }
 
     rettv->vval.v_number = n;
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 5615adc..9576668 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1068,6 +1068,9 @@
     pos_T	orig_start = curbuf->b_op_start;
     pos_T	orig_end = curbuf->b_op_end;
     int		save_lockmarks = cmdmod.lockmarks;
+#ifdef FEAT_FILTERPIPE
+    int		stmp = p_stmp;
+#endif
 
     if (*cmd == NUL)	    /* no filter command */
 	return;
@@ -1100,20 +1103,25 @@
 	shell_flags |= SHELL_DOOUT;
 
 #ifdef FEAT_FILTERPIPE
-    if (!do_in && do_out && !p_stmp)
+# ifdef VIMDLL
+    if (!gui.in_use && !gui.starting)
+	stmp = 1;   // Console mode doesn't support filterpipe.
+# endif
+
+    if (!do_in && do_out && !stmp)
     {
 	/* Use a pipe to fetch stdout of the command, do not use a temp file. */
 	shell_flags |= SHELL_READ;
 	curwin->w_cursor.lnum = line2;
     }
-    else if (do_in && !do_out && !p_stmp)
+    else if (do_in && !do_out && !stmp)
     {
 	/* Use a pipe to write stdin of the command, do not use a temp file. */
 	shell_flags |= SHELL_WRITE;
 	curbuf->b_op_start.lnum = line1;
 	curbuf->b_op_end.lnum = line2;
     }
-    else if (do_in && do_out && !p_stmp)
+    else if (do_in && do_out && !stmp)
     {
 	/* Use a pipe to write stdin and fetch stdout of the command, do not
 	 * use a temp file. */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 429b457..d5dfeff 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -5746,6 +5746,14 @@
     HIMC	hImc;
     static HIMC	hImcOld = (HIMC)0;
 
+# ifdef VIMDLL
+    if (!gui.in_use && !gui.starting)
+    {
+	mbyte_im_set_active(active);
+	return;
+    }
+# endif
+
     if (pImmGetContext)	    /* if NULL imm32.dll wasn't loaded (yet) */
     {
 	if (p_imdisable)
@@ -5815,6 +5823,11 @@
     int		status = 0;
     HIMC	hImc;
 
+# ifdef VIMDLL
+    if (!gui.in_use && !gui.starting)
+	return mbyte_im_get_status();
+# endif
+
     if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
     {
 	status = pImmGetOpenStatus(hImc) ? 1 : 0;
diff --git a/src/mbyte.c b/src/mbyte.c
index 6ecf53b..4dfcfc9 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -4789,7 +4789,8 @@
 # define USE_IMSTATUSFUNC (*p_imsf != NUL)
 #endif
 
-#if defined(FEAT_EVAL) && (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM))
+#if defined(FEAT_EVAL) && \
+    (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
     static void
 call_imactivatefunc(int active)
 {
@@ -6454,11 +6455,15 @@
 
 #else /* !defined(FEAT_XIM) */
 
-# ifdef IME_WITHOUT_XIM
+# if defined(IME_WITHOUT_XIM) || defined(VIMDLL)
 static int im_was_set_active = FALSE;
 
     int
+#  ifdef VIMDLL
+mbyte_im_get_status(void)
+#  else
 im_get_status(void)
+#  endif
 {
 #  if defined(FEAT_EVAL)
     if (USE_IMSTATUSFUNC)
@@ -6468,7 +6473,11 @@
 }
 
     void
+#  ifdef VIMDLL
+mbyte_im_set_active(int active_arg)
+#  else
 im_set_active(int active_arg)
+#  endif
 {
 #  if defined(FEAT_EVAL)
     int	    active = !p_imdisable && active_arg;
@@ -6481,7 +6490,7 @@
 #  endif
 }
 
-#  ifdef FEAT_GUI
+#  if defined(FEAT_GUI) && !defined(VIMDLL)
     void
 im_set_position(int row UNUSED, int col UNUSED)
 {
diff --git a/src/menu.c b/src/menu.c
index e55cab6..2632794 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -685,7 +685,11 @@
 	    if (	addtearoff
 		    && *next_name
 		    && vim_strchr(p_go, GO_TEAROFF) != NULL
-		    && menu_is_menubar(name))
+		    && menu_is_menubar(name)
+#  ifdef VIMDLL
+		    && (gui.in_use || gui.starting)
+#  endif
+		    )
 	    {
 		char_u		*tearpath;
 
diff --git a/src/proto.h b/src/proto.h
index 452f9e2..c358a1d 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -177,6 +177,11 @@
 # include "mouse.pro"
 # include "move.pro"
 # include "mbyte.pro"
+# ifdef VIMDLL
+// Function name differs when VIMDLL is defined
+int mbyte_im_get_status(void);
+void mbyte_im_set_active(int active_arg);
+# endif
 # include "normal.pro"
 # include "ops.pro"
 # include "option.pro"
diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim
index 83bada5..c6aa3a2 100644
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -519,7 +519,7 @@
   if !exists('+termguicolors')
     return
   endif
-  if has('vtp') && !has('vcon')
+  if has('vtp') && !has('vcon') && !has('gui_running')
     " Win32: 'guicolors' doesn't work without virtual console.
     call assert_fails('set termguicolors', 'E954:')
     return
diff --git a/src/version.c b/src/version.c
index ad9f3ad..5747085 100644
--- a/src/version.c
+++ b/src/version.c
@@ -738,6 +738,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2361,
+/**/
     2360,
 /**/
     2359,
